如何通过跳过几个节点来比较两个xmls?

时间:2016-10-28 08:02:08

标签: java xml-parsing xmlunit

我有两个字符串格式的xmls。需要通过跳过几个节点来比较它们。在结果中,只需要节点和相应值的差异。

假设我有以下两个xmls:

消息-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

2 个答案:

答案 0 :(得分:1)

我认为您仍然可以将XMLUnit用于该作业,但您无法使用默认设置。相反,您可能希望实现忽略某些属性或节点的自定义DifferenceEvaluator

有关详细信息和示例,请参阅XMLUnit DifferenceEvaluator

答案 1 :(得分:0)

使用XMLUnit 2.x,您可以使用NodeFilter并禁止要跳过的节点。像

这样的东西
DiffBuilder b = DiffBuilder.compare(some-input)
    .withTest(some-test)
    .withNodeFilter(n -> !":PREV".equals(n.getTextContent()))
    ...