2011-09-06 117 views
1

我想解析一些XML在PHP中使用simpleXMLsimpleXML解析

雖然我遇到的問題是,有些節點有像Milk & Cheese的值,我得到一個解析錯誤。

什麼是最簡單的方法來解析XML使用simpleXML與字符如&和/存在?

感謝

編輯:

我使用:

$source = 'stockdata.xml'; 
$stock = simplexml_load_file($source); 

foreach($stock->StockItem as $item) 
{ 
........ 
} 
+0

-1是有點粗糙這裏,連最後的編輯之前。 +1,除非我另有說明 – Dlongnecker

回答

2

快速的解決方案:

$xml = str_replace('&','&',$xml); //$xml is the content in string format 

一個更好的解決方案: [如果你控制XML]

添加CDATA在XML標籤

<name><![CDATA[ Milk & honey]]></script> 

,你會需要告訴SimpleXml照顧CDATA:

$sxml = simplexml_load_file('myfile.xml','SimpleXMLElement', LIBXML_NOCDATA); 

希望這有助於

+0

必須改變使用'file_get_contents'讀取XML的方式。現在似乎都好了。 – terrid25

3

您需要使用XML (and HTML) entities。而不是Milk & Cheese使用Milk &amp; Cheese。你可以在W3Schools找到完整的列表。

+0

這個php函數做到這一點是htmentites()。所以你可以這樣做:$ str = htmlentities($ str,ENT_QUOTES,$ encoding); ENT_QUOTES指出它應該如何處理引號,並且$編碼是可選的,但是如果你知道包括它是很好的。 – perilandmishap