2010-10-20 140 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到別人。 (或者,也許你可以,但有一些我沒有得到)