【发布时间】:2015-07-21 00:33:08
【问题描述】:
我想知道 XMLUNIT 是否提供了一种在进行比较之前忽略 XML 中存在的某些元素的方法。例如,如果我想忽略服务器随机生成的字段。是否有任何可用的XMLUnit 中的框以忽略某些元素,或者我需要编写自定义 DifferenceListener ?
另外,它是否提供了不匹配的元素名称?如果不是,那么比较两个 XML 的最佳方法是什么,它可以让我忽略某些元素并为我提供不匹配的元素名称/值?
【问题讨论】:
我想知道 XMLUNIT 是否提供了一种在进行比较之前忽略 XML 中存在的某些元素的方法。例如,如果我想忽略服务器随机生成的字段。是否有任何可用的XMLUnit 中的框以忽略某些元素,或者我需要编写自定义 DifferenceListener ?
另外,它是否提供了不匹配的元素名称?如果不是,那么比较两个 XML 的最佳方法是什么,它可以让我忽略某些元素并为我提供不匹配的元素名称/值?
【问题讨论】:
恐怕自定义DifferenceListener 是目前唯一可行的方法。 XMLUnit2 (https://github.com/xmlunit/xmlunit/issues/26) 的功能请求尚未实现。
实现DifferenceListener 可能有点麻烦,因为您不仅会收到Differences 用于您想要忽略的元素,而且很可能还会收到父元素的子元素数量的Differences。
每个Difference 包含NodeDetails 用于在测试和控制端看到的节点,NodeDetail 包含DOM Node(在您的情况下将是Element)。
【讨论】:
DetailedDiff 不会给您所有差异(每个感知差异可能不止一个Difference 对象,因为缺少节点会导致它们的父节点不同)?