DOMDocument 中的关闭标记 (XML PHP)
Close tag in DOMDocument (XML PHP)
我需要帮助!!我想关闭 "order" 标签,但是 returns 标签看起来像这样:
<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);
我希望 return 是:
<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>
但看起来像这样:
<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>
我做错了什么,我不知道是什么 有什么想法吗?
尝试用以下代码替换第 1-4 行:
$order = $doc->createElement('order');
$doc->appendChild($order);
$data = $doc->createElement('data');
$order->appendChild($data);
您没有将子节点附加到正确的父节点。在 DOM 中,您使用文档 (DOMDocument::create*
) 中的方法创建节点,并使用父节点 (\DOMNode::appendChild()
、\DOMNode::insertBefore()
) 的方法附加它。
所以首先创建一个文档对象并添加order
元素。
$document = new \DOMDocument();
$order = $document->appendChild($document->createElement('order'));
\DOMNode::appendChild()
returns 附加节点,因此您可以嵌套创建调用。接下来创建 data
元素并将其附加到 order
节点。
$data = $order->appendChild($document->createElement('data'));
您将此节点附加到文档中。这会导致一个空的 order
节点。空 XML 节点可以写成短语法 <tag/>
。
我需要帮助!!我想关闭 "order" 标签,但是 returns 标签看起来像这样:
<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);
我希望 return 是:
<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>
但看起来像这样:
<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>
我做错了什么,我不知道是什么 有什么想法吗?
尝试用以下代码替换第 1-4 行:
$order = $doc->createElement('order');
$doc->appendChild($order);
$data = $doc->createElement('data');
$order->appendChild($data);
您没有将子节点附加到正确的父节点。在 DOM 中,您使用文档 (DOMDocument::create*
) 中的方法创建节点,并使用父节点 (\DOMNode::appendChild()
、\DOMNode::insertBefore()
) 的方法附加它。
所以首先创建一个文档对象并添加order
元素。
$document = new \DOMDocument();
$order = $document->appendChild($document->createElement('order'));
\DOMNode::appendChild()
returns 附加节点,因此您可以嵌套创建调用。接下来创建 data
元素并将其附加到 order
节点。
$data = $order->appendChild($document->createElement('data'));
您将此节点附加到文档中。这会导致一个空的 order
节点。空 XML 节点可以写成短语法 <tag/>
。