为什么PHP SimpleXML children()为空标记返回null?

时间:2015-09-21 07:26:19

标签: php xml null simplexml children

我们有以下示例XML:

user["photo"]

使用以下PHP代码,我们尝试访问所有xml节点;

<xml>
    <call>
        <branchId>2</branchId>
        <item_main_display>1</item_main_display>
        <workstation_Id>1</workstation_Id>
        <formatted_ticket_number>203</formatted_ticket_number>
        <queue_letter></queue_letter>
        <service_Id>17</service_Id>
        <service_Name>konsultanti Queue</service_Name>
        <isflashing>false</isflashing>
        <workstation_Name>ServicePoint_D924</workstation_Name>
        <callTime>1442583923157</callTime>
        <timestamp>1442583923</timestamp>
        <eventTime>2015-09-18T17:45:23.114+0400</eventTime>
    </call>
</xml>

此代码正常,但不包括:对于标记

$xml=simplexml_load_file("sample.xml");

$xmlStr="";
$xmlStr.="<xml>";

foreach($xml->children() as $child1)
{
    $xmlStr.="<". $child1->getName().">";
    foreach($child1->children() as $child2){ 
        $xmlStr.="<". $child2->getName() .">". $child2 ."</". $child2->getName() .">";
    } 
    $xmlStr.="</". $child1->getName().">";
}
$xmlStr.="</xml>";

对于此标记$ child1-&gt; children()返回null;但如果我在标签之间输入空格

<queue_letter></queue_letter>    

或换行符或任何其他字符,返回标记。

这是正常行为吗?我们如何返回不包含字符的子标签?

谢谢。

2 个答案:

答案 0 :(得分:0)

如果标签之间有空格,则标签不为空 - 他有一个文本节点作为其子节点。

<queue_letter></queue_letter><queue_letter />相同,且此标记没有子节点,因此它始终返回null

答案 1 :(得分:-1)

我能够按照以下方式解决这个问题:我的PHP服务器包含resin.jar 我刚下载了它的最新版本并替换了原来的版本。 一切都很完美。看看这个:Resin web server