我正在尝试比较以下两个XML ...我正在进行相似性测试。
XML1
<top>
<first>true</first> <!--- control node 1 ---->
<second> <!--- control node 2 ---->
<secondpart1>ooo</secondpart1>
</second>
<third> <!--- control node 3 ---->
<thirdpart1>zzzz</thirdpar1>
</third>
<third> <!--- control node 4 ---->
<thirdpart1>zzzz</thirdpar1>
<thirdpart2>zzzz</thirdpar2>
</third>
</top>
XML2
<top>
<second> <!--- test node 1 ---->
<secondpart1>ooo</secondpart1>
</second>
<third> <!--- test node 2 ---->
<thirdpart1>zzzz</thirdpar1>
</third>
<third> <!--- test node 3 ---->
<thirdpart1>zzzz</thirdpar1>
<thirdpart2>zzzz</thirdpar2>
</third>
<first>true</first> <!--- test node 4 ---->
</top>
我收到此错误
[不同]预期的子节点数&#39; 1&#39;但是&#39; 2&#39;。看起来它将控制节点3与测试节点3进行比较。由于元素的名称匹配&#34;第三&#34;,它进行比较。有这种情况的工作吗?
这是我的代码
Diff d = new Diff(xmlResponseTrim, serializedResponseTrim);
DetailedDiff dd = new DetailedDiff(d);
dd.overrideDifferenceListener(new IgnoreTextAndAttributeValuesDifferenceListener());
System.out.println(dd);
assertTrue(dd.similar());
答案 0 :(得分:0)
ElementQualifier
接口决定了XMLUnit相互比较的元素。对于您的具体情况RecursiveElementNameAndTextQualifier
可行,但它不是一般解决方案。在更复杂的情况下,您必须在自己的实现中实现匹配策略。