2017-10-11 6 views
1

Essayez d'écrire un fichier XML avec SimpleXmL. Besoin nicher quelques-unes des balisesImbrication 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'); 

Affichera cela:

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

Mais besoin de l'étiquette de ne pas fermer avant la balise. Vous voulez que ça ressemble à ceci:

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

Répondre

2

les opérations suivantes:

$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'); 

Cela va ajouter la balise <delivery> dans <order> tag. Et de fournir la sortie comme:

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

Si vous voulez ajouter à l'enfant $orderlist, puis écrire correctement:

$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();