XMLunit 比较失败,因为子节点顺序

XMLunit Comparison failure because child nodes order

我正在将生成的 XML 文件与另一个使用 XMLunit 的示例进行比较,我在 ChildNodes Order 及其属性方面遇到了问题。 (Linux 和 Mac 代不同)

这是我试过的:

@Test
public void testComparingXML() throws Exception {
    XMLUnit.setIgnoreWhitespace(true);
    String expectedXml = IOUtils.toString(ConnectorStrategyStudioXmlTest.class.getClassLoader().getResourceAsStream(EXPECTED_XML));
    String actualXml = IOUtils.toString(ConnectorStrategyStudioXmlTest.class.getClassLoader().getResourceAsStream(ACTUAL_XML));
    Diff diff = new Diff(expectedXml, actualXml);
    diff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
    DetailedDiff detailedDiff = new DetailedDiff(diff);
    assertTrue(detailedDiff.toString(), detailedDiff.similar());
}

我了解到使用 RecursiveElementNameAndTextQualifier class 可以解决问题,但仍然无效。

这是一张图片,其中包含 XML 比较失败的示例: (在新标签页中打开全屏)c:

可以看到,两个子节点都是倒置的

提前TY。娟

使用非默认 ElementQualifier 是正确的解决方案,但 RecursiveElementAndTextQualifier 肯定不能满足您的需要。

乍一看,似乎可以通过查看元素的名称和 caption 属性的值来找到匹配的元素。如果这是正确的,那么 ElementNameAndAttributeQualifier"caption" 作为构造函数参数传入应该可以解决问题。

XMLUnit 内置了更多选项,在最坏的情况下,如果 none 现有选项满足您的需要,您需要自己实现 ElementQualifier 接口。