格式错误的RSS Feed / XML文件?

时间:2010-11-09 22:14:41

标签: php xml rss simplexml

我目前正在开发一个使用php的simplexml来解释来自多个站点的rss源的应用程序。我已经设法让它与Atom和RSS提要一起使用,但是有时只有一个提要有效,这实际上没有意义。 Feed位于http://www.popsci.com/rss.xml。我想知道饲料本身是否格式错误,或者是否有可能正在做的事情是有效的,但不寻常。我上下打量了但是找不到任何错误。我的代码完美地解释了许多其他的提要,所以我想知道为什么这个给它带来了麻烦。而且有时候。我的意思是,有时它会成功解释Feed,但有时候,对simplexml_load_file()的调用会失败并返回false。

我确实有一个错误日志,这是已经报告的内容(每次失败都是一样的):

[08-Nov-2010 03:30:17] PHP警告:simplexml_load_file()[function.simplexml-load-file]:http://www.popsci.com/rss.xml:1:解析器错误:期望开始标记,'<'在第15行的/Applications/MAMP/cmb/cron.php中找不到

[08-Nov-2010 03:30:17] PHP警告:simplexml_load_file()[function.simplexml-load-file]:line在第15行的/Applications/MAMP/cmb/cron.php中

[08-Nov-2010 03:30:17] PHP警告:simplexml_load_file()[function.simplexml-load-file]:^在第15行的/Applications/MAMP/cmb/cron.php

但我不确定如何解决这些错误,如果有人能指出我正确的方向,我将不胜感激。谢谢! (Pron.php中的第15行是对simplexml_load_file()的调用)

2 个答案:

答案 0 :(得分:1)

很可能在饲料中有未转义的字符,通常的嫌疑人是&字符,“字符和<和>字符,所有这些字符在XML中都有特殊含义,因为我相信你已经知道了。

不幸的是,您实际上唯一可以做的就是向Feed发布者抱怨其Feed中的狡猾数据,因为明确禁止XML解析器尝试解析格式错误的XML。他们应该终止并抛出错误。

答案 1 :(得分:1)

处理糟糕饲料的一个好方法是通过饲料燃烧器运行它们。

这是一款谷歌工具,可以为您标准化输出,并在过去为我修复错误。

  1. 在此处粘贴Feed:http://feedburner.google.com/fb/a/myfeeds *您可能需要登录Google帐户
  2. 点击下一步,按照提示操作,它会给你一个网址
  3. 替换脚本中的网址
  4. 希望对你有用:)

    Jase