|
|
|
| Не могу сообразить как сравнивать XML.
Точее, мне надо узнать: есть ли уже искомая XML в базе MySQL или ещё нет.
Как подойти к этой задаче?
Если хранить XML просто в виде текста, порядок следования атрибутов может оказаться иным - и я не получу соответствия, хотя атрибуты будут идентичными.
Или такая ситуация исключена в какой-либо из библиотек РНР?
Ещё тонкость в том, что коментарии не должны влиять на сравнение XML.
Но это можно решить: хранить рядом копию XML без коментариев.
Поделитесь, пожалуста, идеями!
Не могу пока сориентироваться как подойти к сравнению.
В каком формате лучше хранить XML в базе? | |
|
|
|
|
|
|
|
для: Eugene77
(23.11.2008 в 09:06)
| | Сравнивайте по названию. Вычлиняйте его (напр. по атрибутиву) и смотрите есть ли оно в других. | |
|
|
|
|
|
|
|
для: Qiao
(24.11.2008 в 12:32)
| | Вы предлагаете выбрать все(!!!) XML из базы и потом рекурсивно их сравнивать?
Это дорогое удовольствие!
Мне нужно проверить больше сотни XML за секунду при том,что в базе их почти тысяча.
правда они не большие и без "шапок".
Если уж предельно аскетично программировать, то можно даже свести их к пустотелым тегам, которые ничего кроме атрибутов не содержат:
<main1 atr1="name1:value1;name2:value2"><sm1 a2="n1:v1;n2:v2" a3="n4:v5"></sm1><s2><s4></s4><s5></s5></s2></main1>
|
И тому подобное,но всё это в пределах нескольких десятков тегов, зато все с атрибутами. И атрибутов, как правило, несколько.
Может быть для моего случая, какой-нибудь формат таблицы можно изобрести?
Даже если грузить всю таблицу в скрипт, то хоть бы уж компактно...
Ещё трудностьв том,что скрипт не только читает таблицу, но и добавляет в неё записи.
Придётся что ли следить за синхронностью изменения таблицы и массива в оперативной памяти? Тогда только один скрипт остаётся запускать в один момент времени - тоже не слишком радует. | |
|
|
|