输出Java XML比较工具



我使用XMLunit编写了一个简短的XML比较Java工具。出于我的目的,有必要忽略节点顺序和一些特殊的元素名称。所附的代码是工作良好的。现在我想知道它们的不同之处。不幸的是,diffi . tostring()给了我所有的差异以及"不相同"的差异,但我想将输出减少到真正的不同,因为"不相同"的输出是由节点的不同顺序引起的。

我的输出看起来像:

org.custommonkey.xmlunit.Diff
[not identical] Expected sequence of child nodes '770' but was '771' …
[not identical] Expected sequence of child nodes '771' but was '772' …
[not identical] Expected sequence of child nodes '772' but was '773' …
…
[different] Expected text value 'Dominik' but was 'Dominika' - comparing <VORNAMEN ...>Dominik</VORNAMEN>…
我的代码是:
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();
    }
}

Thanks for help

在调用similar之前将Diff包装在DetailedDiff中,DetailedDiff将允许您访问所有Difference。然后,您可以过滤这些Difference是否为recoverable,并对不可恢复的toString调用自己。

最新更新