【问题标题】:Output of Java XML comparison toolJava XML比较工具的输出
【发布时间】:2016-10-21 21:45:58
【问题描述】:

我使用 XMLunit 编写了一个用于 XML 比较的简短 Java 工具。 出于我的目的,有必要忽略节点顺序和一些特殊的元素名称。 附加的代码可以正常工作。现在我想了解差异。不幸的是 diff.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();
    }
}

感谢您的帮助

【问题讨论】:

    标签: java xml xmlunit


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多