我正在尝试使用XMLUnit 2比较xml文件。
<composite>
<data>
<subtag>
<code>1</code>
</subtag>
<subtag>
<code>2</code>
</subtag>
</data>
</composite>
第二个文件是相同的,唯一的区别是'subtag'标签的切换位置。
<composite>
<data>
<subtag>
<code>2</code>
</subtag>
<subtag>
<code>1</code>
</subtag>
</data>
</composite>
到目前为止,我一直不走运,找到了一组适合匹配这两个元素的ElementMatchers。
是否有针对此问题的现成解决方案?
最佳答案
这与XMLUnit用户指南中的“ tr
由嵌套th
标识”示例几乎相同。一种解决方案是使用条件ElementSelector
并确保在决定采用哪个subtag
时使用正确的规则-请参见https://github.com/xmlunit/user-guide/wiki/SelectingNodes#conditional-elementselectors
在您的具体情况下
ElementSelectors.conditionalBuilder()
.whenElementIsNamed("subtag")
.thenUse(ElementSelectors.byXPath("./code", ElementSelectors.byNameAndText))
.elseUse(ElementSelectors.byName)
.build();
应该做。假设
subtag
由其code
子元素的嵌套文本标识。