Слияние XML в PHP DOM - PullRequest
       6

Слияние XML в PHP DOM

1 голос
/ 15 ноября 2010

Я хочу объединить PHP DOMDocument в другой ..

//this creates the DOM which will be imported
function element_index(..)
{
$skrit=new DOMDocument();
$skrit->loadXML('<krits:kriti xmlns:krits="http://test.de/krits">..</krits:kriti>');
return $skrit;
}

function crawl_xml($element)
{
//thats the line where to get the result and merge      
$skrit=element_index(..);
$temp3=$skrit->documentElement->cloneNode(true);
$element->appendChild($xpIn->importNode($temp3));
}

//thats how i start the recurisve walking through Nodes
$xpIn = new DOMDocument();
crawl_xml($xpIn->firstChild);

Ввод / вывод должен выглядеть так:

<!--input-->
<all><one/></all>

<!--input new to add-->
<krits:kriti xmlns:krits="http://test.de/krits">..</krits:kriti>

<!--ouput-->
<all><krits:kriti xmlns:krits="http://test.de/krits">..</krits:kriti><one><krits:kriti xmlns:krits="http://test.de/krits">..</krits:kriti></one></all>

Может быть, importNode может быть не очень хорошим выбором? Я использовал cloneNode, потому что надеялся избежать проблем с рекурсивным вызовом. Так что я делаю не так? Спасибо за вашу помощь!

1 Ответ

1 голос
/ 15 ноября 2010

Если вы хотите импортировать все поддерево узла (а не только сам узел), вам нужно установить $ deep в true в importNode:

$domDocument->importNode($node, true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...