PHP DOMDocument перемещает узлы из документа в другой

Хорошо, я пытаюсь добиться этого в течение нескольких часов и не могу найти решение, так что я здесь!

У меня есть 2 DOMDocument, и я хочу переместить узлы документа на другой. Я знаю структуру обоих документов, и они одного типа (поэтому у меня не должно возникнуть проблемы с их объединением).

Кто-нибудь может мне помочь? Если вам нужна дополнительная информация, дайте мне знать.

Благодаря!

Related of "PHP DOMDocument перемещает узлы из документа в другой"

Чтобы скопировать (или) переместить узлы в другой DOMDocument вам придется импортировать узлы в новый DOMDocument с importNode() . Пример, взятый из руководства:

 $orgdoc = new DOMDocument; $orgdoc->loadXML("<root><element><child>text in child</child></element></root>"); $node = $orgdoc->getElementsByTagName("element")->item(0); $newdoc = new DOMDocument; $newdoc->loadXML("<root><someelement>text in some element</someelement></root>"); $node = $newdoc->importNode($node, true); $newdoc->documentElement->appendChild($node); 

Где первый параметр importNode() – это сам узел, а второй параметр – логическое значение, указывающее, следует ли импортировать все дерево узлов.

Вам нужно импортировать его в целевой документ. См. DOMDocument :: importNode

Использование этого кода для неизвестной структуры документа.

 $node = $newDoc->importNode($oldDoc->getElementsByTagName($oldDoc->documentElement->tagName)->item(0),true); 
 <?php protected function joinXML($parent, $child, $tag = null) { $DOMChild = new DOMDocument; $DOMChild->loadXML($child); $node = $DOMChild->documentElement; $DOMParent = new DOMDocument; $DOMParent->formatOutput = true; $DOMParent->loadXML($parent); $node = $DOMParent->importNode($node, true); if ($tag !== null) { $tag = $DOMParent->getElementsByTagName($tag)->item(0); $tag->appendChild($node); } else { $DOMParent->documentElement->appendChild($node); } return $DOMParent->saveXML(); } ?>