如何使用PHP DOM关闭xml元素?

时间:2012-11-05 16:53:59

标签: php xml dom

我一直在使用PHP DOM来创建和保存xml文件(第三方xml文件)。到目前为止,我的结构是正确的,但是遇到了一个元素没有用结束标签关闭的问题,即。

<FX>
 <Stompbox ID="1">
  <Module ID="0" POS="0" BypassState="1"/>
 </Stompbox>
</FX>

应该是这样的 - 模块结束标记

<FX>
 <Stompbox ID="1">
  <Module ID="0" POS="0" BypassState="1"></Module>
 </Stompbox>
</FX>

这是代码

$xmlRoot = $domtree->appendChild($xmlRoot); 
    /* Add FX node */
$fx = $domtree->createElement("FX");
$fx = $xmlRoot->appendChild($fx);
    /* Add Stompbox node */
$fx->appendChild($stompbox = $domtree->createElement('Stompbox')); 

$attr_mod = new DOMAttr('ID', "1");
$stompbox->setAttributeNode($attr_mod);
$stompbox->appendChild($module = $domtree->createElement('Module'));

$attr_mod = new DOMAttr('ID', "0");
$module->setAttributeNode($attr_mod);
$attr_pos = new DOMAttr('POS', '0'); 
$module->setAttributeNode($attr_pos); 
$attr_bypass_state = new DOMAttr('BypassState', '1'); 
$module->setAttributeNode($attr_bypass_state);

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

该元素已关闭。有两种方法可以在XML中关闭元素:

通过自我关闭:

 <someelement someattr="somevalue" />

或者是空洞的内在:

 <someelement someattr="somevalue"></someelement>

它们在语义上是相同的,并且许多实现选择前者,因为它会产生更小且更易读的文件。