【问题标题】:simpleXML parsing简单XML解析
【发布时间】:2011-09-06 15:15:37
【问题描述】:

我正在尝试在 PHP 中使用 simpleXML 解析一些 XML。

我遇到的问题是,某些节点的值类似于 Milk & Cheese,而我遇到了解析错误。

使用带有 & 和 / 等字符的 simpleXML 解析 XML 的最简单方法是什么?

谢谢

编辑:

我正在使用:

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

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

【问题讨论】:

  • -1 在这里有点粗糙,甚至在最后一次编辑之前。 +1 除非我另有所闻

标签: php xml simplexml


【解决方案1】:

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

【讨论】:

  • 执行此操作的 php 函数是 htmentites()。所以你可以这样做: $str = htmlentities($str, ENT_QUOTES, $encoding); ENT_QUOTES 表示它应该如何处理引号,并且 $encoding 是可选的,但如果你知道它是好的包含。
【解决方案2】:

快速解决方案:

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

更好的解决方案: [如果你控制 xml ]

在 xml 标签中添加 CDATA

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

您需要告诉 SimpleXml 处理 CDATA:

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

希望对你有帮助

【讨论】:

  • 不得不改变使用file_get_contents读取XML的方式。现在似乎一切正常。
猜你喜欢
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
  • 2014-08-27
  • 2016-03-31
相关资源
最近更新 更多