Вывод инструмента сравнения Java XML

Я написал короткий инструмент Java для сравнения XML с использованием XMLunit. Для моих целей необходимо игнорировать порядок узлов и некоторые специальные имена элементов. Прикрепленный код работает нормально для этого. Теперь я хотел бы получить различия. К сожалению, 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();
    }
}

Спасибо за помощь

1 ответ

Оберните Diff внутри DetailedDiff перед вызовом similar и DetailedDiff позволит вам получить доступ ко всем Differences. Затем вы можете отфильтровать те Differenceо том, являются ли они recoverable и вызвать toString на невосстановимые сами.

Другие вопросы по тегам