Секрет DOM XML для баз данных

Статус
В этой теме нельзя размещать новые ответы.

dumber

Постоялец
Регистрация
23 Апр 2007
Сообщения
272
Реакции
124
:) ну заголовок пожалуй громковат, но все таки.
Проблема в том что если вы захотите свой XML документ всунуть в БД а затем загрузить его то наткнетесь на небольшую проблемку, которая как видно из выдачи поисковиков встречается не редко.


Ошибка Extra content at the end of the document in Entity вводит в ступор любого начинающего мудохаться с ДОМ (ну не один же я идиот такой :-]) а означает она что вообщем-то документ непрально сделан и load функции его не читают. "Как плять неправильно если я его через сам ДОМ и делал? (дальше идет пиииииии)" ну сделали да и флаг вам в руки :)
Движок плюется потому что документ непральный.
Щас поясню:

Вот этот код выдаст ошибку

PHP:
$doc = new DomDocument();

$xmlTxt = '<?xml version="1.0"?>
<item rel="1" title="Link 1" link="http://nulled.ws" desc="Link to heaven"><item rel="4" title="subLink 1" link="http://nulled.ss" desc="subLink 1 to heaven"/></item>
<item rel="2" title="Link 2" link="http://nulled.cc" desc="Link 2 to heaven"/>
<item rel="3" title="Link 3" link="http://nulled.cn" desc="Link 3 to heaven"/>';

$doc->loadXML($xmlTxt);
echo $doc->saveXML();

потому что в нем добавляются какие-то странные элементы после первого ITEM (не спрашивайте меня "почему") Чтобы наш лоудер не плевался весь контент документа надо засунуть в контейнер.
Вот это код ошибки не даст

PHP:
$doc = new DomDocument();

$xmlTxt = '<?xml version="1.0"?>
<items>
<item rel="1" title="Link 1" link="http://nulled.ws" desc="Link to heaven"><item rel="4" title="subLink 1" link="http://nulled.ss" desc="subLink 1 to heaven"/></item>
<item rel="2" title="Link 2" link="http://nulled.cc" desc="Link 2 to heaven"/>
<item rel="3" title="Link 3" link="http://nulled.cn" desc="Link 3 to heaven"/>
</items>';

$doc->loadXML($xmlTxt);
echo $doc->saveXML();

То есть при оформлении XML документа, помните что должна быть древовидная структура и корень 1 а не несколько тогда парсер ошибок выдавать не будет.

В интернете несмотря на распространеность ошибки не увидел ни одного пояснения ;) так что можно сказать эксклюзив от Dumber :D
 

Kloster

Старатель
Регистрация
22 Июн 2009
Сообщения
220
Реакции
12
Это стандарт XML - чтобы код был валидный, необходим один корневой элемент, из которого все растет.
Тоже мне открыл Америку. :)
Хотя новичкам полезно будет, как и чтение документации.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху