XMLUnit - влияние отступов файла Xml на сравнение

В настоящее время я пытаюсь использовать библиотеку XMLUnit для сравнения двух файлов XML. Один из них, кандидат, генерируется моим кодом из объектов Java (с использованием JAXB), а другой - ссылкой (я не могу его изменить). В основном я пытаюсь доказать, что, учитывая ссылочный XML файл, я могу его неэриализовать (используя Jaxb и некоторые мои собственные классы), а затем сериализует его обратно в другой файл и все еще имеет один и тот же контент.

Библиотека, похоже, предоставляет нужные мне услуги, но когда сгенерированный файл не имеет должным образом отступы (в виде "довольно печатной" версии), сравнение терпит неудачу, и это не происходит, когда отступы в порядке. Например, когда создается кандидат, нет отступов, содержимое является однострочным, если его отступ правильно (вручную), это сравнение в порядке.

Вот сообщение об ошибке, сгенерированное XMLUnit:

[другое] Ожидаемое количество детей узлы "3", но были "1"

У вас, ребята, есть идея решить это? Возможно, решение состоит в том, чтобы создать довольно печатную версию кандидата, в этом случае у вас есть идея объединить ее с сериализатором JAXB?

Кстати, если вы теперь лучше разбираетесь в Java для сравнения файлов XML, я буду рад узнать об этом;)

Заранее благодарим за помощь.

Ответы

Ответ 1

Вы можете уменьшить некоторые ограничения, используемые XMLUnit, по сравнению с деревьями, установив свойства в классе org.custommonkey.xmlunit.XMLUnit.

В вашем случае вы, вероятно, захотите:

XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true);

Вы также можете найти свойство setIgnoredAttributeOrder полезным.

Ответ 2

Как это сделать с XMLUnit 2.x, см. мой ответ здесь к аналогичному вопросу.