【发布时间】:2015-09-21 07:26:19
【问题描述】:
我们有以下示例 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>
使用下面的 PHP 代码我们尝试访问所有的 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>";
此代码工作正常,除了:对于标签
<queue_letter></queue_letter>
对于这个标签 $child1->children() 返回 null;但是如果我在标签之间输入空格
<queue_letter> </queue_letter>
或换行符,或任何其他字符,标签被返回。
这是正常行为吗?我们如何返回不包含字符的子标签?
谢谢。
【问题讨论】:
-
问题中提供的代码对我来说很好:3v4l.org/uA6Fm(虽然整个事情可以简化为
$xml->asXML(),但我认为你需要以这种方式循环它是有原因的.) -
哦,仅供参考,
<xml>是保留名称,因此上述 XML 在技术上是无效的。同样,可能只是您匿名示例的方式,但如果您实际使用该标签,我建议您更改它以避免以后出现问题。 -
谢谢。很有用。
标签: php xml null simplexml children