2013-03-08 72 views
1

我需要在一个新的根节点添加到下面的XML添加新的XML根节点

<?xml version="1.0"?> 
<unit> 
<source> 
<id>ANCH02</id> 
<uri>http://www.hamiltonisland.biz/tabid/339/Default.aspx</uri> 
</source> 
</unit> 

成为

<?xml version="1.0"?> 
     <units> 
     <unit> 
     <source> 
     <id>ANCH02</id> 
     <uri>http://www.hamiltonisland.biz/tabid/339/Default.aspx</uri> 
     </source> 
     </unit> 
     </units> 

我怎么能这样做?它似乎不像SimpleXMLElement具有此功能。我也看过这个DomNode示例http://php.net/manual/en/domnode.insertbefore.php,但它似乎不能添加到新的根节点中。

+0

示例用'inserBefore':http://codepad.org/vwAP25St – hakre 2013-03-08 04:43:58

回答

4

这似乎工作

$units = $dom->createElement('units'); 
$units->appendChild($dom->documentElement); 
$dom->appendChild($units); 

DEMO

+0

这个伟大的工程- 谢谢! – Franco 2013-03-08 00:46:39

1

DOM文档:

$yourDOMDOMDocument ... <--- already loaded XML 
$doc = new DOMDocument(); 
$doc->appendChild($doc->createElement('Units')); 
$doc->documentElement->appendChild($doc->importNode($yourDOMDocument->documentElement)); 

或者。如果你有你的XML作为的SimpleXMLElement已经:

$yourSimpleXML ... <--- already loaded XML 
$doc = new DOMDocument(); 
$doc->appendChild($doc->createElement('Units')); 
$domnode = dom_import_simplexml($yourSimpleXML); 
$doc->documentElement->appendChild($doc->importNode($domnode)); 
//if you want it back as SXE: 
$newSimpleXMLElement = simplexml_import_dom($doc);