PHP SimpleXML正在其他节点周围包装空节点

PHP SimpleXML正在其他节点周围包装空节点,php,xml,simplexml,Php,Xml,Simplexml,我在php中使用simpleXML时遇到了一个奇怪的错误,无法找出是什么导致了它。 基本上,我有一个XML模板文件,我正在使用simpleXML加载该文件,如下所示: $xml = simplexml_load_file('template.xml'); 然后,我操作节点内容,当我保存xml时,它已将所有空节点包装在其他节点周围。。。 例如,模板xml部分如下所示: <Shift shiftPeriod=""> <Name></Na

我在php中使用simpleXML时遇到了一个奇怪的错误,无法找出是什么导致了它。 基本上,我有一个XML模板文件,我正在使用simpleXML加载该文件,如下所示:

    $xml = simplexml_load_file('template.xml');
然后,我操作节点内容,当我保存xml时,它已将所有空节点包装在其他节点周围。。。 例如,模板xml部分如下所示:

<Shift shiftPeriod="">
            <Name></Name>
            <Hours></Hours>
            <StartTime></StartTime>
            <EndTime></EndTime>
            <PayTypeHours></PayTypeHours>
            <Comments></Comments>
</Shift>
然后,当我使用$xml->asXML输出xml时,该部分如下所示:

<shift shiftperiod="">
<name>
<hours>
<starttime>
<endtime>
<paytypehours>
<comments>
</comments></paytypehours></endtime></starttime></hours></name></shift>  

所以基本上是把这些节点彼此包裹起来。这可能是我明显缺少的东西,但我在网上找不到任何其他解决方案。如果您有任何建议,我们将不胜感激。

您能告诉我们您操作内容的代码吗?我还注意到,您显示的输出都是小写,但您的输入是混合大小写的;XML解析器不能自己完成这项工作,因此我怀疑输出实际上是您手动创建的XML,而不是输入。好吧,这是一个相当大的文件。但例如,我使用:$xml->Shift->Name=Foo操作内容;嗯,是的,我想这就是原因。。。但是很多字段我甚至没有处理,它们仍然在输出中,所以它必须从模板加载它们,然后将它们转换为小写…如果我将我正在使用的代码添加到你的小提琴中,然后运行它,它也会保持正确的结构。那么,它加载的xml文件可能是坏的?这是有效的,但可能有什么东西不见了?