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

时间:2015-02-23 21:06:47

标签: java xml xsd compare xmlunit

我正在使用XMLunit将生成的XML文件与另一个示例进行比较,并且我遇到了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比较失败的示例: inverted (在全新屏幕中打开全屏)c:

如您所见,两个子节点都被反转

提前TY。涓

1 个答案:

答案 0 :(得分:4)

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

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

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