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

How to compare two xmls by skipping few nodes?

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

假设我有以下两个 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.

使用了以下代码但没有用:

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

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

使用 XMLUnit 2.x 您可以使用 NodeFilter 并抑制要跳过的节点。像

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