0
$sitemap .= "  " . '<orders>' . "\n" .
    "\t" . '<idKlant>' . $id. '</idKlant>' .
    "\n\t" . '<emptyfield></emptyfield>' .
     "\n\t" . '<date>' . $verzenddatum . '</date>' . //remaining to get
    "\n  " . '</orders>' . "\n";

为了生成 XMl,我使用下面的代码

$xmlobj = new SimpleXMLElement($sitemap);
$xmlobj->asXML("orders.xml");

的输出orders.xml

<orders>
    <idKlant>12</idKlant>
    <emptyfield/>
    <date>30-12-2012</date>
</orders>

我想要的是:对于空 xml 字段也应该有打开关闭标签

<orders>
    <idKlant>12</idKlant>
    <emptyfield></emptyfield>
    <date>30-12-2012</date>
</orders>

可能吗?或者我应该添加黑色空间吗?

4

1 回答 1

0

正如 Rolando Isidoro 所说,您不能使用 SimpleXML 做到这一点。但是你总是可以切换到 DOM。两个扩展都使用相同的底层库和表示,因此开销很小。
DOMDocument::saveXML可以将 libxml 选项作为第二个参数,并且有LIBXML_NOEMPTYTAG可以完全满足您的要求。

例如

<?php
$o = new SimpleXMLELement(data());
$docRoot = dom_import_simplexml($o);
echo $docRoot->ownerDocument->savexml($docRoot,LIBXML_NOEMPTYTAG);

function data() {
    return '<orders>
    <idKlant>12</idKlant>
    <emptyfield/>
    <date>30-12-2012</date>
</orders>';
}

印刷

<orders>
    <idKlant>12</idKlant>
    <emptyfield></emptyfield>
    <date>30-12-2012</date>
</orders>
于 2013-07-01T09:36:50.407 回答