我正在尝试使用 XMLUnit 2 来比较 xml 文件。
<composite>
<data>
<subtag>
<code>1</code>
</subtag>
<subtag>
<code>2</code>
</subtag>
</data>
</composite>
第二个文件是相同的,唯一的区别是“子标签”标签交换了位置。
<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();
应该做。这假设您的子标签
由其code
子元素的嵌套文本标识。
关于java - 匹配具有相同名称但不同子值的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50567304/