2017-10-11 38 views
1

試着用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> 

回答

2

嘗試以下操作:

$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> 
0

如果你想孩子添加到$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();