2010-05-27 5 views
1

그래, 필자는 Microsoft의 XML diff 패치 도구를 사용하여 2 개의 XML 문서를 비교하는 유틸리티를 작성하고있다.노드 번호를 사용하여 XML 쿼리하기

<?xml version="1.0" encoding="utf-16"?> 
    <xd:xmldiff version="1.0" srcDocHash="10728157883908851288" options="IgnoreChildOrder IgnoreComments IgnoreWhitespace " fragments="yes" xmlns:xd="http://schemas.microsoft.com/xmltools/2002/xmldiff"> 
    <xd:node match="1"> 
    <xd:node match="1"> 
     <xd:node match="1"> 
     <xd:node match="2"> 
     <xd:node match="1"> 
     <xd:node match="1"> 
      <xd:node match="2"> 
      <xd:change match="1">testi22n2123</xd:change> 
      </xd:node> 
     </xd:node> 
     <xd:add match="/1/1/1/2/1/8" opid="1" /> 
     <xd:node match="7"> 
     <xd:node match="1"> 
      <xd:change match="1">31</xd:change> 
     </xd:node> 
     <xd:node match="2"> 
      <xd:change match="1">test2ing</xd:change> 
     </xd:node> 
     </xd:node> 
     <xd:remove match="8" opid="1" /> 
     </xd:node> 
     </xd:node> 
    </xd:node> 
    </xd:node> 
    </xd:node> 
    <xd:descriptor opid="1" type="move" /> 
    </xd:xmldiff> 

난 할 노력하고있어 것은 다시 원본 문서로 이동 한 차이를 나타내는 소스 데이터를 얻을 수 있습니다 :

결과는 다음과 같이 보입니다. 처음에는 Xpath 쿼리를 만들려고했지만 XML 문서의 XML 공룡처럼 보이는 XmlDiff가 DOM에서 작동합니다.

diff 결과에 제공된 숫자를 사용하여 소스 XML의 노드를 가져 오는 가장 좋은 방법은 무엇입니까?

업데이트 : hmmm ... XmlDiff 및 XmlDiffPatch.View 샘플 외부에서 XmlDiffPatch.View의 원본을 찾지 못하는 것 같습니다. 현재 XmlDiffPatch.View 클래스는 "GetHtml"만 제공합니다. 출력 스타일을 사용하려면 좋지만 수행해야하는 작업에는 적합하지 않습니다. 이상적으로는 차이점의 XML을 반환하고 추가, 변경 또는 삭제 된 내용을 나타내는 메서드를 추가하고 싶습니다. 그런 다음 일부 XSLT를 사용하여 원하는 방식으로 볼 수 있습니다 (또는 다른 기능도 함께 제공).

질문에 대한 답변입니다.이 질문은 분명히 효과적이지만, 누군가가 소스를 본 적이 있는지 궁금합니다.

답변

0

당신은 여기에 대한 답변을 찾을 :

http://msdn.microsoft.com/en-us/library/aa302295.aspx#xmldif_topic3

들은 "이 코드를 분석하고 DiffGram의에 지정된 변경 사항을 적용하는 것은 사소한 아니다"

당신이 무엇을 필요가 말하는 것처럼 당신이 원하는 것을하기 위해 diffgram 형식을 이해할 수 있지만, 모든 것이 거기에 있습니다.

는 XPath/DOM 질문은 당신을위한 막 다른 골목 같은 소리 - 그들이 있습니다에 대한 방법 당신이 DiffGram의 처리를 어떤에 붙어 것으로 보인다 반면 처리가 이루어집니다.

+0

링크를 사용해 주셔서 감사합니다. 지금 XPath 표현식과 같은 식으로 그 숫자를 감쌀 수 있다고 생각했지만, 이제는 분명히 "어떻게"아닌 "무엇" . –

관련 문제