2009-09-09 3 views
6

필자는 XML 파일이 올바른지 테스트해야 할 필요가 있으며 다음과 같이 2 개의 XML 문자열 (또는 문서)이 동일한 지 테스트하는 방법이 필요합니다.XML 파일을 테스트하기위한 AssertEquals가 있습니까?

XMLAssert.assertEquals(String xmlExpected, String xmlActual); 

또한 XML 문서가 달랐다.

이것은 standalone = "yes"(즉, DTD 또는 스키마가있는 경우 중요하지 않음) 인 문서로 제한되어야합니다. 즉, 기본값이 없으며 속성 유형이 부적절합니다. 인접한 텍스트 PCDATA 노드는 정규화 (연결)되어야합니다.

동일한 XML 정보 세트를 무한히 많이 렌더링하는 방법이 무한히 있기 때문에 어휘 비교

Assert.assertEquals(xmlExpected, xmlActual); 

로 간단하게이 작업을 수행 할 수 없습니다. 비교에서는 요소 및 속성의 네임 스페이스를 고려해야하지만 (특성 값은 아니며 사양의 일부는 아님)

이 작업을 수행하는 한 가지 방법은 두 문서를 모두 표준화하는 것입니다. 또는 XMLDiff를 사용할 수도 있습니다.

아무것도 찾을 수 없으므로 몇 년 전에 나 자신을 썼습니다.

[CDATA 나 PCDATA의 데이터 유형은 추측 할 수 있고 질문에 대한 즉각적인 범위를 벗어날 수 있기 때문에 해킹이어야합니다.]

참고 : 아마도 각 언어에 대한 특정 솔루션이 필요할 것입니다. 나는 특히 자바와 C#

에 관심이있다.

답변

5

자바의 경우 XMLUnit을 확인해야합니다. 그리고 .NET 버전도 함께 제공됩니다. 다음은 Java 버전의 샘플입니다.

String myControlXML = "<msg><uuid>0x00435A8C</uuid></msg>"; 
String myTestXML = "<msg><localId>2376</localId></msg>"; 
assertXMLNotEqual(myControlXML, myTestXML); 
+0

감사합니다. 이것은 분명히 내가 원하는 바대로 포괄적이며, 내가 쓴 것보다 더 강력합니다. 내가 2 년 전에 발견하지 못한 것이 유감이다. –

1

XmlDiffPatch.dll을 사용해 볼 수있다. http://msdn.microsoft.com/en-us/xml/bb190622.aspx으로 이동하여 "XML Diff and Patch"를 다운로드하고 프로젝트에 DLL에 대한 참조를 추가하십시오. 실제 코드에서는이 코드를 사용하지 않았지만 번들로 제공되는 XmlDiff.Exe 도구를 사용해보십시오.

관련 문제