嵌套simplexml

问题描述:

试着用SimpleXmL来使用xml。需要嵌套一些标签嵌套simplexml

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><orders></orders>'); 
     $orderlist = $xml->addChild('order'); 
     $orderlist->addAttribute('shipdate', date('Y-m-d H:i:s')); 

     $orderlist = $xml->addChild('delivery'); 
     $orderlist->addAttribute('weight', '0'); 

这将输出如此:

<?xml version="1.0" encoding="utf-8"?> 
    <orders> 
     <order shipdate="2017-10-11 13:44:12" /> 
     <delivery weight="0" /> 
    <order/> 
    </orders> 

但需要的标签不标签之前关闭。 希望它看起来是这样的:

<?xml version="1.0" encoding="UTF-8"?> 
<orders> 
    <order shipdate="2016-07-14T14:41:30"> 
    <delivery weight="0" /> 
    </order> 
</orders> 

尝试以下操作:

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><orders></orders>'); 
     $orderlist = $xml->addChild('order'); 
     $orderlist->addAttribute('shipdate', date('Y-m-d H:i:s')); 

     $delivery = $orderlist->addChild('delivery'); 
     $delivery->addAttribute('weight', '0'); 

这将增加内部<order>标签<delivery>标签。并提供类似的输出:

<?xml version="1.0" encoding="utf-8"?> 
<orders> 
    <order shipdate="2017-10-11 22:28:13"> 
     <delivery weight="0"/> 
    </order> 
</orders> 

如果你想孩子添加到$orderlist,然后把它写正确:

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><orders></orders>'); 
// add child to root node `orders` 
$orderlist = $xml->addChild('order'); 
$orderlist->addAttribute('shipdate', date('Y-m-d H:i:s')); 

// add child to newly created `order` node 
$delivery = $orderlist->addChild('delivery'); 
$delivery->addAttribute('weight', '0'); 

echo $xml->asXML();