2014-10-13 6 views
1

XML 문서에 주어진 XML DOM 하위 트리가 있는지 확인해야합니다. 이 하위 트리의 모든 요소와 특성이 문서에 있는지 확인하면됩니다. 그러나 비교를 위해 지정된 하위 트리와 일치하는 문서의 하위 트리에 더 많은 요소 또는 속성이있을 수 있습니다. 그리고 나는 그들이 비교에서 건너 뛰게하고 싶다.XML 문서에 하위 트리가 있는지 확인하는 방법

지금까지 주어진 XML 문서에서 Node 클래스로 표현 된 하위 트리를 찾는 자체 솔루션을 구현했습니다. 이 Node 클래스는 요소 이름, 텍스트 내용, 자식 노드 목록 및 특성 맵과 비교할 때 필요한 특성 만 포함합니다. 내 자신의 클래스를 구현했고 org.w3c.dom.Node를 사용하지 않았습니다. 테스트 시나리오에 필요한 불필요한 많은 특성을 포함하고 있기 때문에 너무 크기 때문입니다. 루트 Node 요소에 의해 표현 된 서브 트리는 한 요소 씩 차례로 반복되고 전체 트리가 검사되거나 하위 트리가 발견되지 않을 때까지 XPath를 사용하여 주어진 XML 문서에서 각 하위 트리를 검색합니다.

이 솔루션은 하위 트리가 있는지 여부를 확인해야하는 경우에만 제대로 작동합니다. 그러나 자주 변경되는 큰 구성 파일을 확인하기 위해이 방법을 사용하며 변경이 발생한 정확한 위치를 찾는 것은 매우 어렵습니다. 그래서 더 나은 결과를 내고 차이를 쉽게 볼 수있는 기존 솔루션을 사용하는 것에 대해 생각합니다. 불행히도, 나는 나의 기준에 맞는 것을 찾을 수 없었습니다.

이것을 허용하는 도구가 있습니까? 나는 XMLUnit에 대해 들었고 그것을 빨리 살펴 봤지만 다른 요소 나 속성을 무시한 문서에서 하위 트리를 찾을 수 있는지 확신 할 수 없다. 가능한 경우 XMLUnit에서이를 수행하는 방법을 보여줄 수 있습니까?

답변

0

아니요, 이것은 XMLUnit 1.x가 적합한 것은 아닙니다. XPath를 사용하여 하위 트리의 루트 노드에서 새 문서로 가져 와서 비교할 수 있지만 관심이없는 모든 차이를 필터링해야합니다.

현재 XMLUnit 2에서 작업 중입니다. .x 그리고 당신을 도울 수있는 도구가 한순간에 들어있을 수도 있습니다 (현재 1.x보다 훨씬 잘 작동하지는 않습니다). 그러나 아직 끝나지 않았습니다.

관련 문제