2017-07-28 186 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/>來編寫。