Не работает импорт importNode элемента из одного документа в другой

alekciy

Новичок
Не работает импорт importNode элемента из одного документа в другой

И ни как не могу понять почему так, ведь написано вроде правильно.
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);
и прочие шаманства, но все равно в браузере получаю:
Fatal error: Uncaught exception 'DOMException' with message 'Wrong Document Error' in ....
Версия PHP Version 5.1.4.

-~{}~ 17.08.06 01:50:

Пока просматривал форум наткнулся на любопытную мысл. XML не валидный-то из за отсутствия encoding="UTF-8". Теперь данный скрипт работает. Собственно пишу это для того, кто столкнется с подобной проблемой.

А вопрос может оказат актуальным, т.к. данный скрипт был составлен для проверки. Просто возникал проблема в другой, более большом скрипте. А там-то encoding прописан...

Пойду ставить опыты над большим скриптом.

-~{}~ 17.08.06 03:16:

И так разобрался уже и в более габаритном скрипте.

Хочу добавить некоторые соображения для тех, кто сталкнется с подобной проблемой. Резюме к теме, так сказать.

1) Если браузер отображается XML и не ругается, это не значит, что файл валидный. Не стоит забывать описывать кодировку атрибутом encoding.

2) DOMDocument->importNode()
Нужно указывать не DOMDocument объект из которого копируем узел, а DOMDocument объект в который импортируется узел.
 
Сверху