alekciy
Новичок
Не работает импорт importNode элемента из одного документа в другой
И ни как не могу понять почему так, ведь написано вроде правильно.
XML файл bd_user.xml:
Скрипт:
Порывшийсь поиском убедился, что код в принципе верный и даже схожие проблемы у людей были, однако как там все закончилось не ясно. Видимо удачно, если не удосужились отписать.
Даже так пытался:
и прочие шаманства, но все равно в браузере получаю:
-~{}~ 17.08.06 01:50:
Пока просматривал форум наткнулся на любопытную мысл. XML не валидный-то из за отсутствия encoding="UTF-8". Теперь данный скрипт работает. Собственно пишу это для того, кто столкнется с подобной проблемой.
А вопрос может оказат актуальным, т.к. данный скрипт был составлен для проверки. Просто возникал проблема в другой, более большом скрипте. А там-то encoding прописан...
Пойду ставить опыты над большим скриптом.
-~{}~ 17.08.06 03:16:
И так разобрался уже и в более габаритном скрипте.
Хочу добавить некоторые соображения для тех, кто сталкнется с подобной проблемой. Резюме к теме, так сказать.
1) Если браузер отображается XML и не ругается, это не значит, что файл валидный. Не стоит забывать описывать кодировку атрибутом encoding.
2) DOMDocument->importNode()
Нужно указывать не DOMDocument объект из которого копируем узел, а DOMDocument объект в который импортируется узел.
И ни как не могу понять почему так, ведь написано вроде правильно.
XML файл bd_user.xml:
Код:
<?xml version="1.0"?><novel><book><part>Book 1</part><chapter>Chapter 1</chapter></book></novel>
PHP:
<?php
$doc = new DOMDocument();
$doc->load('bd_user.xml');
$DOM_NodeRoot = $doc->documentElement;
$DOM_firstChild = $DOM_NodeRoot->firstChild;
$XML = new DOMDocument('1.0', 'windows-1251');
$RootElement2 = $XML->createElement('HTML');
$DOM_cloneNode = $DOM_firstChild->cloneNode(true);
$DOM_importNode = $XML->importNode($DOM_cloneNode,true);
$DOM_NodeRoot2 = $XML->appendChild($RootElement2);
$DOM_NodeRoot2->appendChild($DOM_importNode);
echo $XML->saveXML();
?>
Даже так пытался:
PHP:
$DOM_importNode = $XML->importNode($DOM_firstChild,true);
Версия PHP Version 5.1.4.Fatal error: Uncaught exception 'DOMException' with message 'Wrong Document Error' in ....
-~{}~ 17.08.06 01:50:
Пока просматривал форум наткнулся на любопытную мысл. XML не валидный-то из за отсутствия encoding="UTF-8". Теперь данный скрипт работает. Собственно пишу это для того, кто столкнется с подобной проблемой.
А вопрос может оказат актуальным, т.к. данный скрипт был составлен для проверки. Просто возникал проблема в другой, более большом скрипте. А там-то encoding прописан...
Пойду ставить опыты над большим скриптом.
-~{}~ 17.08.06 03:16:
И так разобрался уже и в более габаритном скрипте.
Хочу добавить некоторые соображения для тех, кто сталкнется с подобной проблемой. Резюме к теме, так сказать.
1) Если браузер отображается XML и не ругается, это не значит, что файл валидный. Не стоит забывать описывать кодировку атрибутом encoding.
2) DOMDocument->importNode()
Нужно указывать не DOMDocument объект из которого копируем узел, а DOMDocument объект в который импортируется узел.