Скажем, у меня есть два XML-документа: один сгенерирован из BaseX, а другой - из процесса маршаллинга в JAXB.
Я хотел бы проверить равенство их обоих для целей проверки.
Если они идентичны как по структуре, так и по содержанию, то это пройдет проверку. В противном случае, если они отличаются, проверка не пройдет.
Я читал о xml-diff, однако то, что меня интересует, аналогично Boolean result = xmlDoc.isIdenticalTo(thisXmlDoc), а не конкретным различиям между двумя документами.
Для этого используется Java 8. Есть ли такой подход?





Установите процессор для XQuery 1.0+ или XPath 2.0+ (например, Saxon или BaseX, поскольку он уже существует) и запустите выражение XPath deep-equal($doc1, $doc2).
Однако предупреждение: это довольно сложно сделать правильно. Часто встречаются незначительные различия, которые, как вы знаете, не имеют отношения к делу, но которые все же заставляют deep-equal() возвращать false. Saxon предлагает альтернативный saxon:deep-equal(), который использует параметры, чтобы указать, какие аспекты документа важны (например, пробелы, пространства имен, комментарии), но это все равно может быть разочаровывающим процессом. Отчасти разочарование заключается просто в том, что deep-equal() не сообщает вам, какие различия он обнаружил, и вы можете долго чесать голову, прежде чем поймете, что это была вкладка, а не пробел.