XMLUnit - отступ XML-файла влияет на сравнение - PullRequest
15 голосов
/ 09 марта 2011

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

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

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

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

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

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

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

Ответы [ 2 ]

20 голосов
/ 09 марта 2011

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

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

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

Вам также может пригодиться свойство setIgnoredAttributeOrder.

0 голосов
/ 08 июня 2017

Чтобы узнать, как это сделать с помощью XMLUnit 2.x, см. Мой ответ здесь на аналогичный вопрос.

...