2017-07-28 92 views
0

我需要帮助!我想关闭“命令”标签,但回报标签是这样的:关闭DOMDocument中的标记(XML PHP)

<order\> 

我的PHP代码,它看起来像这样:

    $root = $doc->createElement('order'); 
        $root = $doc->appendChild($root); 

        $data = $doc->createElement('data'); 
        $data = $doc->appendChild($data); 

        $codigos = $doc->createElement('orderID'); // etiqueta 
        $codigos = $data->appendChild($codigos); // etiqueta 
        $textart = $doc->createTextNode($orden); // var del texto 
        $textart = $codigos->appendChild($textart); // ingreso al xml 

        $res = $doc->createElement('metodoCompra'); 
        $res = $data->appendChild($res); 
        $textres = $doc->createTextNode($metodoCompra); 
        $textres = $res->appendChild($textres); 

        $resMet = $doc->createElement('metodoPago'); 
        $resMet = $data->appendChild($resMet); 
        $textres = $doc->createTextNode($metodoPago); 
        $textres = $resMet->appendChild($textres); 

        $resFec = $doc->createElement('fecha'); 
        $resFec = $data->appendChild($resFec); 
        $textres = $doc->createTextNode($fecha); 
        $textres = $resFec->appendChild($textres); 

        $res = $doc->createElement('emailComprador'); 
        $res = $data->appendChild($res); 
        $textres = $doc->createTextNode($email); 
        $textres = $res->appendChild($textres); 

        $res = $doc->createElement('totalCompra'); 
        $res = $data->appendChild($res); 
        $textres = $doc->createTextNode($total); 
        $textres = $res->appendChild($textres); 

我想回报是:

<order> 
<data> 
<orderID>108</orderID> 
<metodoCompra>Envio a coordinar</metodoCompra> 
<metodoPago>Giro Bancario</metodoPago> 
<fecha>09-08-2016</fecha> 
<emailComprador>[email protected]</emailComprador> 
<totalCompra>6565.2000</totalCompra> 
</data> 
</order> 

但它看起来是这样的:

<order/> 
<data> 
<orderID>108</orderID> 
<metodoCompra>Envio a coordinar</metodoCompra> 
<metodoPago>Giro Bancario</metodoPago> 
<fecha>09-08-2016</fecha> 
<emailComprador>[email protected]</emailComprador> 
<totalCompra>6565.2000</totalCompra> 
</data> 

有什么我做错了,我不知道它是什么任何想法?

回答

0

尝试使用此代码替换1-4行:

$order = $doc->createElement('order'); 
$doc->appendChild($order); 

$data = $doc->createElement('data'); 
$order->appendChild($data); 
+0

它的工作原理!谢谢丹尼尔! –

0

你没有子节点追加到正确的父节点。在DOM中,您可以使用文档(DOMDocument::create*)中的方法创建父节点(\DOMNode::appendChild(),\DOMNode::insertBefore())的节点和方法以将其附加。

所以首先创建一个文档对象并添加order元素。

$document = new \DOMDocument(); 
$order = $document->appendChild($document->createElement('order')); 

\DOMNode::appendChild()返回附加节点,因此您可以嵌套创建调用。接下来,创建data元素并将其附加到order节点。

$data = $order->appendChild($document->createElement('data')); 

您将此节点附加到文档。这会导致一个空的order节点。空的XML节点可以使用简短的语法<tag/>来编写。