嵌套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();