2011-05-05 3 views
8

메소드로 생성 된 XML이 예상되는 XML 문서와 동일한 요소/값을 포함하는지 확인해야하는 몇 가지 단위 테스트가 있습니다.. UnitTesting에 대한 Xml 비교 자

Java에서 xmlunit을 사용했는데 .net 버전이 있지만 이름 공간을 지원하지 않는 것 같습니다. 이 일을 위해 .net 내에서 대안이 있습니까?

만큼 난 그냥 ... 2 XML을 문자열을 비교하고 그들까지 포함 된 데이터가 내가 행복에 관한 한 일치하는 경우 참/거짓 결과가 말해 얻을 수

+0

당신이뿐만 아니라 네임 스페이스를 비교하고 싶은, 또는 단지 노드가 MS XML을 DIFF 패치에 대한 XML –

답변

3

시도의 Microsoft.XmlDiffPatch :

static public bool IsXmlEqual(XmlReader x1, XmlReader x2, 
    bool IgnoreChildOrder, bool IgnoreComments, bool IgnorePI, bool IgnoreWhitespace, 
    bool IgnoreNamespaces, bool IgnorePrefixes, bool IgnoreXmlDecl, bool IgnoreDtd 
) 
{ 
    XmlDiffOptions options = XmlDiffOptions.None; 
    if (IgnoreChildOrder) options |= XmlDiffOptions.IgnoreChildOrder; 
    if (IgnoreComments) options |= XmlDiffOptions.IgnoreComments; 
    if (IgnorePI) options |= XmlDiffOptions.IgnorePI; 
    if (IgnoreWhitespace) options |= XmlDiffOptions.IgnoreWhitespace; 
    if (IgnoreNamespaces) options |= XmlDiffOptions.IgnoreNamespaces; 
    if (IgnorePrefixes) options |= XmlDiffOptions.IgnorePrefixes; 
    if (IgnoreXmlDecl) options |= XmlDiffOptions.IgnoreXmlDecl; 
    if (IgnoreDtd) options |= XmlDiffOptions.IgnoreDtd; 

    XmlDiff xmlDiff = new XmlDiff(options); 
    bool bequal = xmlDiff.Compare(x1, x2, null); 
    return bequal; 
} 
+1

1에 포함되어 있습니다 : 여기에 더 기술적으로 기울어위한 좋은 읽기입니다. http://msdn.microsoft.com/en-us/library/Aa302294보다 나은 다운로드 링크가 있습니까? –

+0

그게 전부라고 생각합니다. 꽤 오래된 라이브러리입니다 (XML도 그렇습니다). 그것은 매력처럼 작동합니다. – Nestor

+0

Visual Studio의 NuGet 패키지 관리자를 통해 MS XMLDiffPatch를 다운로드 할 수도 있습니다. –

7

나는 보통 내 요구에 대해 XNode.DeepEquals이면 충분하다는 사실을 발견했습니다. BCL의 일부이므로 다운로드가 필요하지 않습니다.

0

나는 MS의 XMLDiff를 사용했지만 이전에는 더 좋았지 만, 더 나은 GUI와 일괄 처리 기능 (.NET API는 있지만)이 있으므로 비교 3을 사용하는 것이 좋습니다. 당신의 테스트를위한

는, 문자열 기반 표현을 MSXML XMLDiff에 대해 명심해야 할

1

뭔가를 비교하는 XNode.DeepEquals 또는 InnerXML을 사용하면 매우 큰 XML 문서를 비교하는 경우 XMLDiff.Algorithm하지 설정되어 있는지 확인한다는 것입니다 "Precise (정밀하게)"로 설정하면 메모리가 부족해질 수 있습니다. 기본적으로 API로 안전한 선택 인 Auto로 설정하면 파일 크기, 발견 된 차이 개수 및 기타 요소를 기반으로 Precise 또는 Fast 중 무엇을 사용할 지 선택합니다.

http://treepatch.sourceforge.net/report.pdf