Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > сравнить 2 .xml файла


Автор: Samotnik 3.1.2008, 19:37
как  smile  ?
возьмем тривиальный пример
1.xml
Код

<a>
<b>
</b>
</a>

2.xml
Код

<a>
<b/>
</a>

как средствамі  java  сказать , что эті файлы одінаковы ???

Автор: sith 3.1.2008, 19:45
... хм... интересная задача... можно попробывать отпарсить эти файлы с помощью DOM и сравнить их... да и что значит равны ли xml  документы? равенство узлов и значени... или полностью текста...?

Автор: nornad 3.1.2008, 20:06
Можно сделать иначе. Пройтись по тексту обоих файлов и заменить пустые теги на вариант <b/>. Сразу же убрать и переводы строк, а множественные "пробелы" заменить на одиночный пробел (тут есть явная дырка, но в определённых условиях на неё можно не обращать внимания). После этого можно просто сравнить два файла.
Хотя нет, если узлы будут в разной последовательности идти, то не сравнится smile
Тогда да, ДОМ. Грузим оба хмла. Потом идём по одному и для каждого узла ищем соответствующий в другом дереве. Если нет - не совпали, если есть, но иные данные - не совпали. Если совпали выбрасываем из второго дерева найденный узел и идём дальше. В конце надо глянуть на второе дерево - если узлов не осталось - совпали, если что-то есть - деревья отличались.

Добавлено через 36 секунд
Только я не понял, причём тут ЕЕ?  smile 

Автор: Samotnik 3.1.2008, 20:33
sith, nornad,  пасибо,  наверное это единственный способ!   DOM, действительно...    

Автор: v2v 4.1.2008, 21:14
а что значит одинаковы?
если в первом
Код

<a>
<a1>Computer</a1>
<a2></a2>
</a>

а во втором:
Код

<a>
<a1>Computer</a1>
</a>

Это считается одинаковым?,думаю всё таки правильней - это парсить, и сравнивать значения всех полученных элементов).

Автор: nornad 4.1.2008, 22:42
Ну мы про то и говорили вообще-то smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)