我正在使用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比较失败的示例: (在全新屏幕中打开全屏)c:
如您所见,两个子节点都被反转
提前TY。涓答案 0 :(得分:4)
使用非默认ElementQualifier
是正确的解决方案,但RecursiveElementAndTextQualifier
肯定无法满足您的需求。
乍一看,通过查看元素的名称和caption
属性的值,看起来应该可以找到匹配的元素。如果这是正确的,那么带有ElementNameAndAttributeQualifier
的{{1}}作为构造函数参数传入应该可以解决问题。
XMLUnit内置了更多选项,在最坏的情况下,如果现有选项都不符合您的需求,您需要自己实现"caption"
接口。