使用带有一些空字段的'SimpleXML Element'生成XML?

时间:2013-07-01 08:21:01

标签: php xml

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

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

1 个答案:

答案 0 :(得分:0)

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

e.g。

<?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>