2011-09-06 191 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