Игнорировать пустые теги xml - PullRequest
0 голосов
/ 02 февраля 2020

Я сравниваю два xml файла и хочу игнорировать пустые xml элементы, поскольку они могут немного отличаться в двух файлах, но разница не важна для моего приложения. Например:

<XXX></XXX>
<XXX />

Что будет означать грамматика, которую нельзя сравнивать, чтобы игнорировать, если один файл имеет пустой тег, как один из приведенных выше, а другой файл имеет другой. Было бы также неплохо, если бы я мог игнорировать его, если в одном файле есть пустой тег, а в другом - ничего.

Извините, если это было задано, но я не смог найти ответ с помощью поиска или Google.

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 03 февраля 2020

В XPath 2.0 deep-equal(doc('doc1.xml'), doc('doc2.xml')) вернет true для этих двух примеров. Фактически он будет иметь дело со многими тривиальными вариациями между XML документами, такими как порядок атрибутов и выбор разделителей атрибутов. Вы определенно хотите сравнивать проанализированный XML, а не необработанный лексический XML.

Сказав это, функция deep-equal() не идеальна, как и любой другой компаратор, потому что требования у всех разные (например, имеют ли значение комментарии?). Saxon включает параметризованную версию deep-equal(), которая может помочь вам уточнить ваши сравнения. Но даже этого не всегда достаточно: например, некоторые люди хотят сравнения, в которых порядок элементов игнорируется.

...