【问题标题】:XMLunit Comparison failure because child nodes orderXMLunit 比较失败,因为子节点顺序
【发布时间】:2015-02-23 21:06:46
【问题描述】:

我正在将生成的 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 类可以解决问题,但仍然不起作用。

这是一个带有 XML 比较失败示例的图像: (在新标签中打开全屏)c:

如你所见,两个子节点都是倒置的

提前 TY。娟

【问题讨论】:

    标签: java xml xsd compare xmlunit


    【解决方案1】:

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

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

    XMLUnit 中内置了更多选项,在最坏的情况下,如果现有选项都不符合您的需求,您需要自己实现 ElementQualifier 接口。

    【讨论】:

    • 非常感谢!成功了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多