Вы можете сделать это, используя DOMDocument:
<?php
$aDoc = DOMDocument::loadXML('<?xml version="1.0" encoding="UTF-8" ?>
<first_root>
<element1/>
<element2>
<embedded_element/>
</element2>
</first_root>');
$bDoc = DOMDocument::loadXML('<?xml version="1.0" encoding="UTF-8" ?>
<foo>
<bar/>
</foo>');
$aEmbeddedElement = $aDoc->getElementsByTagName('embedded_element')->item(0);
$bFoo = $bDoc->documentElement;
$aImportedFoo = $aDoc->importNode($bFoo,true);
$aEmbeddedElement->insertBefore($aImportedFoo);
echo $aDoc->saveXML();
?>
Здесь я импортировал XML в DOMDocument
s, затем я выбрал первый embedded_element
экземпляр и foo
узел.После того, как вам нужно импортировать глубоко foo
в первый документ.Теперь вы можете вставить foo
перед embedded_element
.
Очевидно, что это только счастливый случай ...
Документация: DOM
СSimpleXML
Вы можете сделать это, создав третий документ на основе первых двух, потому что вы не можете добавлять SimpleXMLElements в другие.(Или, может быть, вы можете, но есть кое-что, что я не получил)