2010-10-20 122 views
0

比方说,我有XML文档:插入从XML文档的XML元素添加到其他的XML文档

<first_root> 
    <element1/> 
    <element2> 
    <embedded_element/> 
    </element2> 
</first_root> 

<foo> 
    <bar/> 
</foo> 

我怎样才能把这个第二XML文档进入第一一,使用PHP和DomDocument或SimpleXML?

我希望它看起来像这样的事情:

<first_root> 
    <element1/> 
    <element2> 
    <foo> 
     <bar/> 
    </foo> 
    <embedded_element/> 
    </element2> 
</first_root> 

回答

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进入第一个文件。现在您可以在embedded_element之前插入foo

显然,这只是幸福的情况下...

文档:DOM

随着SimpleXML您可以通过构建基于前两个第三文档做到这一点,因为你不能追加SimpleXMLElements到别人。 (或者,也许你可以,但有一些我没有得到)