Search code examples
phpxmltagsdomdocument

Close tag in DOMDocument (XML PHP)


i need help!! I want to close a "order" tag, but the returns tag look like this:

<order\>

My php code it looks like this:

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

I would like the return to be:

<order>
<data>
<orderID>108</orderID>
<metodoCompra>Envio a coordinar</metodoCompra>
<metodoPago>Giro Bancario</metodoPago>
<fecha>09-08-2016</fecha>
<emailComprador>silviaalberti46@gmail.com</emailComprador>
<totalCompra>6565.2000</totalCompra>
</data>
</order>

But it looks like this:

<order/>
<data>
<orderID>108</orderID>
<metodoCompra>Envio a coordinar</metodoCompra>
<metodoPago>Giro Bancario</metodoPago>
<fecha>09-08-2016</fecha>
<emailComprador>silviaalberti46@gmail.com</emailComprador>
<totalCompra>6565.2000</totalCompra>
</data>

There is something I am doing wrong and I do not know what it is Any ideas?


Solution

  • Try to replace the lines 1-4 with this code:

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