Вывод инструмента сравнения 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
позволит вам получить доступ ко всем Difference
s. Затем вы можете отфильтровать те Difference
о том, являются ли они recoverable
и вызвать toString
на невосстановимые сами.