如何通过跳过少数节点来比较两个xmls?
问题描述:
我有两个字符串格式的xml。需要跳过少数节点来比较两者。结果只需要节点和相应值的差异。如何通过跳过少数节点来比较两个xmls?
假设我有以下两个个XML:
留言-1
<block4>
<tag>
<name>35B</name>
<value>/GB/B0W1VM9</value>
</tag>
</block4>
消息 - 2
<block4>
<tag>
<name>35B</name>
<value>/US/999999999
NOT AVAILABLE AT PRESENT</value>
</tag>
</block4>
我使用XMLUnit但我想找到区别于少数几个块,并希望跳过少数具有特定值的节点。如<tag>
中的值所示::PREV应该被跳过。
注意:最后要在excel中打印结果。
用下面的代码而不是有用:https://stackoverflow.com/a/16471601/3493471
答
使用XMLUnit 2.x,您可以使用NodeFilter
并抑制要跳过的节点。类似于
DiffBuilder b = DiffBuilder.compare(some-input)
.withTest(some-test)
.withNodeFilter(n -> !":PREV".equals(n.getTextContent()))
...
答
我觉得你还是可以使用XMLUnit测试那份工作,但你不能使用默认设置。相反,您可能想要实现忽略某些属性或节点的自定义DifferenceEvaluator
。
有关详细信息和示例,请参阅XMLUnit DifferenceEvaluator。