【问题标题】:How to compare two xmls by skipping few nodes?如何通过跳过几个节点来比较两个 xml?
【发布时间】:2016-10-28 08:02:08
【问题描述】:

我有两个字符串格式的 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,但我想从几个块中找出差异,并希望跳过几个具有特定值的节点。就像&lt;tag&gt; 中的值一样 : :PREV 应该被跳过。

注意:最后要在excel中打印结果。

使用了以下代码但没有用:https://stackoverflow.com/a/16471601/3493471

【问题讨论】:

    标签: java xml-parsing xmlunit


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      使用 XMLUnit 2.x,您可以使用 NodeFilter 并抑制要跳过的节点。类似的东西

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-04
        • 2013-05-05
        • 1970-01-01
        • 2021-03-21
        • 2017-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多