2017-08-09 44 views
0

我有以下XML(source.xml):的SimpleXML的foreach行不通

<SHOP> 
<SHOPITEM> 
<ITEM_ID>3664</ITEM_ID> 
<PRODUCT>Product n.1</PRODUCT> 
<PRODUCT_NAME>Product n.1</PRODUCT_NAME> 
<VARIANT_NAME/> 
<MANUFACTURER>Jeffrey</MANUFACTURER> 
<CODE>ABC123</CODE> 
<EAN>123456789</EAN> 
<DESCRIPTION> 
Maybe later... 
</DESCRIPTION> 
<DESCRIPTION_HTML/> 
<CATEGORIES> 
<CATEGORY id="1" parent_id="0">ABx</CATEGORY> 
</CATEGORIES> 
</SHOPITEM> 
<SHOPITEM> 
...etc 

而下面的代碼:

$xml = simplexml_load_file("source.xml", NULL, LIBXML_NOCDATA); 


foreach ($xml->shopitem as $shopitem) { 

    echo $shopitem->item_id; 
} 

不幸的是,這是行不通的。即使我把回聲'a';進入foreach循環,什麼也沒有出現。 XML是有效的。嘗試var_dump($ xml),並且XML看起來正確加載。哪裏不對?謝謝。

+2

XML區分大小寫。 – ThW

+0

非常感謝! – Mishkin

+0

注意:你不需要'LIBXML_NOCDATA';它唯一的作用是在少數情況下使'print_r'和其他調試函數的輸出更清晰一些;它不會改變使用'echo'或將值變爲變量時的實際行爲。 – IMSoP

回答

1
$xml = simplexml_load_file("source.xml", NULL, LIBXML_NOCDATA); 

foreach ($xml->SHOPITEM as $shopitem) { 

    echo $shopitem->ITEM_ID; 

} 
+0

非常感謝!我非常高興看到它在2小時的試用後都能正常工作:))) – Mishkin