我們下面的示例XML:爲什麼PHP SimpleXML children()爲空標籤返回null?
<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->兒童()返回null;但是,如果我在標籤之間輸入空格
<queue_letter> </queue_letter>
或換行符或任何其他字符,則返回標籤。
這是正常的行爲嗎?我們如何返回不包含字符的子標籤?
謝謝。
問題中提供的代碼適用於我:https://3v4l.org/uA6Fm(雖然整個事情可以簡化爲'$ xml-> asXML()',但我假設有一些原因需要以這種方式進行循環。) – IMSoP
哦,僅供參考,''是保留名稱,所以上述XML在技術上無效。再說一次,可能只是你匿名化你的例子的方式,但如果你真的使用了這個標籤,我建議改變它以避免以後出現問題。 –
IMSoP
謝謝。非常有用。 –