我使用XMLunit编写了一个用于XML比较的简短Java工具。 为了我的目的,有必要忽略节点顺序和一些特殊的元素名称。 附加的代码工作正常。现在我想得到分歧。不幸的是diff.toString()给了我所有的差异也是“不相同的”,但我想把输出减少到真正不同的,因为“不相同”的输出是由节点的不同顺序引起的。
我的输出如下:
public void vergleichen()
{
XMLUnit.setIgnoreAttributeOrder(Boolean.TRUE);
XMLUnit.setIgnoreWhitespace(Boolean.TRUE);
String f1 = lesen(quelle);
String f2 = lesen(vergleich);
try {
Diff diff = new Diff(f1, f2);
diff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
diff.overrideDifferenceListener(new IgnoreNamedElementsDifferenceListener("ex1","ex2","ex3"));
boolean result = diff.similar();
if (result==true)
{
System.out.println("Die Dateien sind gleich");
}
else
{
System.out.println("Es wurden Unterschiede gefunden");
System.out.println(diff.toString())
}
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我的代码是:
{{1}}
感谢您的帮助
答案 0 :(得分:0)
在调用Diff
之前将DetailedDiff
包裹在similar
内,DetailedDiff
将允许您访问所有Difference
。然后,您可以根据Difference
过滤这些recoverable
,并自行调用不可恢复的toString
。