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, см. мой ответ здесь к аналогичному вопросу.