Я хочу объединить 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, потому что я надеялся избежать проблем с рекурсивным вызовом. Так что я делаю неправильно? Спасибо за вашу помощь!
Если вы хотите импортировать все подэлемент узла (а не только сам узел), вам необходимо установить значение $ deep в true в importNode
:
$domDocument->importNode($node, true);