假设我需要xml文档:
<first_root>
<element1/>
<element2>
<embedded_element/>
</element2>
</first_root>
和
<foo>
<bar/>
</foo>
如何使用php和DomDocument或SimpleXML将第二个xml doc放入第一个?
我希望它看起来像这样:
<first_root>
<element1/>
<element2>
<foo>
<bar/>
</foo>
<embedded_element/>
</element2>
</first_root>
答案 0 :(得分:2)
您可以使用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附加到其他文档中。 (或许你可以,但有一些我没有得到的)