Php SimpleXMLElement不会创建正确的子级

Php SimpleXMLElement不会创建正确的子级,php,simplexml,Php,Simplexml,我正在使用simplexmlement创建一个新的xml文件。 我想创建类似于以下内容的内容: <?xml version="1.0"?> <command type="scenario" name="test"> <game type="play" filename="google"> </game> </command> 为什么? 文件中未显示新行 游戏标记没有结束标记 试试这个 $game = new Simpl

我正在使用
simplexmlement
创建一个新的xml文件。 我想创建类似于以下内容的内容:

<?xml version="1.0"?>
<command type="scenario" name="test">
    <game type="play" filename="google">
    </game>
</command>
为什么?

  • 文件中未显示新行
  • 游戏标记没有
    结束标记
  • 试试这个

    $game = new SimpleXMLElement('', LIBXML_NOEMPTYTAG);    
    $xml->addChild($game);
    

    您可以在这里找到格式化输出的解决方案

    @lexicus解释了如何实现所需的输出。在回答您的问题“为什么?”时,示例文件和SimpleXML输出之间在逻辑上没有区别:

  • XML解析器忽略标记之间的空白。两个标记是相邻的(
    )还是由57392391空行分隔并不重要;所有解析器将看到的都是XML元素
  • 只是
    的XML缩写。
    />
    明确表示它是一个空标记

  • 您没有在SimpleXML中编写文档;您正在构建一个XML树。当您调用
    ->asXML()
    时,它会以尽可能简单的方式写出树。

    我很困惑,请给出一个将输出我要求的代码的示例。如果行得通,我会接受你的回答。只需在你的答案中编辑它。谢谢,当我添加LIBXML\u NOEMPTYTAG时,我得到了介于…之间的数字4??我刚刚读到LIBXML\u NOEMPTYTAG有一个bug。所以这就是为什么我可能会得到意外的输出。有什么原因需要它和空格和完整的结束标记一起输出吗?就任何XML解析器而言,这两个文档都是相同的。
    <?xml version="1.0"?>
    <command type="scenario" name="test"><game type="play" filename="google"/></command>
    
    $game = new SimpleXMLElement('', LIBXML_NOEMPTYTAG);    
    $xml->addChild($game);