Russian Qt Forum

Qt => XML => Тема начата: serjjj от Июль 30, 2011, 00:31



Название: Сравнение 2х QDomDocument
Отправлено: serjjj от Июль 30, 2011, 00:31
Есть 2 QDomDocument можно ли как-нибудь определить их идентичность?


Название: Re: Сравнение 2х QDomDocument
Отправлено: Fess от Июль 30, 2011, 19:36
Для начала опишите по каким _критериям_ вы определяете идентичность двух документов.
Например:
Идентичны, если их текст на 90% совпадает.
Идентичны, если имеют схожую структуру.
Я полагаю, речь идет о нечетком сравнении документов?
В свое время использовал вот такой подход: http://habrahabr.ru/blogs/algorithm/65944/
Если заинтересуют, могу кое-чем помочь.


Название: Re: Сравнение 2х QDomDocument
Отправлено: serjjj от Июль 31, 2011, 22:33
Меня интересует полное совпадение 2х документов. Т.е. 100% все узлы со всем их содержимым должны совпасть. Сейчас я делаю toByteArray 2х документов и выхлоп сравниваю. Проблема в том, что при некоторых условиях одинаковые документы по разному преобразуются. Например пустой элемент может быть <tag/>, а может быть <tag></tag> со всеми вытекающими.


Название: Re: Сравнение 2х QDomDocument
Отправлено: Fess от Август 01, 2011, 04:44
А QDomDocument у вас читает оба варианта? Вроде бы он уверенно читает только валидные xml..
Может прогонять сначала через валидатор, а затем сравнивать?
http://tidy.sourceforge.net/


Название: Re: Сравнение 2х QDomDocument
Отправлено: serjjj от Август 02, 2011, 23:34
Все документы валидные. Например, если из файла считать <tag></tag>, то после toByteArray он станет <tag/>. А если программно создать элемент tag, и в него добавить пустой текстовый элемент то после toByteArray получиться <tag></tag>.