nataraj: (Default)
[personal profile] nataraj
Поскольку рабочий день у меня вдруг закончился, а делать больше ничего не хочется, то я еще побрюзжу на тему XML...

В системе (угадайте какой), структура системы при экспорте записывается в виде xml'я. вида
<types>
<type name="aaaa">
.....
</type>
<type name="bbbb">
......
</type>
</types>

Вороде бы хорошо и красиво. Работает, супер. Правда, когда оно писалось, libxml под перлом еще не было (первая версия XML::LibXML август 2001, а load_meta начал писаться в январе 2001) и оно мучительно читается через XML::Parser.

Это фиг бы с ним. Работает и ладно...

Но наступает момент, когда надо сравнить, правильно ли оная структура была загружена. Кажется все просто, загрузить, выгрузить, сравнить результаты...

И тут начинается...

diff'ом результатом не сравнишь, потому что порядок <type name="aaaa"> и <type name="bbbb"> никто не гарантирует, черт его знает, как оно из базы придет.
xmldiff тоже не катит, потому что он на все изменения порядка срабатывает...

XML::Diff, есть такой модуль, оказался наредкость сырой, и падал на пустых тегах <p></p>

Найти каких либо внятных средств которые бы умели нестрого сравнивать, мне так и не удалось...

В результате пришлось писать свою собственную приблуду сравнивающую деревья с определенными свойствами...

Вывод: бардак в общем виде скорее вреден, чем полезен.
Вот.

Date: 2007-06-27 07:34 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Libxml давить! Как и Ппрочее гномствво. Сам же пользуешся в fb2images не е, а XML:DOM,который базируется как раз на XML::Parser. Ну а в этой задаче DOM явно лишний. Ибо докумннта здесь нет.

Все плохо...

Date: 2007-06-28 07:40 am (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
XML::DOM Readme:

==================
The XML::DOM code is fairly stable and has been used quite a bit.

However, there is a new DOM module, XML::GDOME which is under active
development and significantly faster than XML::DOM, since it is based on
the libgdome C library. It provides Level 2 of the DOM Core API. For
more details see http://tjmather.com/xml-gdome/
==================

Смотрим XML::GDOME: Написано "It uses a XS wrapper around the gdome2 library".
Смотрим http://gdome2.cs.unibo.it/: Там написано "Libgdome is based on libxml2."

При этом последняя версия XML::DOM от 25 Jul 2005, а XML::GDOME от 30 Mar 2004

И при этом я сам лично ловил на XML::DOM ошибку
Для текста
<body>
<p>Русский текст
<p>«English Text»
</body>
Если его загрузить и сохранить назад в utf-8, на выходе у меня получался невалидный уникод. Кавычки вместо уникодного кода были записаны в кодировке iso 8859-1

Может я конечно не приминил какой нибудь хак, который можно было бы применить... Но что-то я в XML::DOM после этого не верю.

Как знатоку XML

Date: 2007-06-27 08:16 pm (UTC)
From: [identity profile] mike-lubimov.livejournal.com
Я вот сегодня бил по почкам своих индусов - у них один счет через flexxml закачивается 10 секунд - уму непостижимо. тормоза какие. А вопрос такой - тупой, знаю, насколько быстро через xml можно пулятся информацией... :)

Re: Как знатоку XML

Date: 2007-06-28 07:43 am (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
В смысле закачивался? Заносился в систему? Передавался через интернет?
Да хрен его знает. С дуру можно и хрен сломать...

У меня например сравнитель работал секунд по N-цать пока я не оторвал скачку внешнего DTD из сети, при распарсивании, благо он не нужен. Тогда все стало летать...
Тут конкретно смотреть надо

Profile

nataraj: (Default)
Swami Dhyan Nataraj

July 2024

S M T W T F S
 123456
789 10111213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 20th, 2026 09:32 am
Powered by Dreamwidth Studios