iPhone RSS阅读器 - parseXML不会加载一些XML提要

时间:2009-03-25 15:09:16

标签: iphone objective-c rss

我正在使用http://theappleblog.com/2008/08/04/tutorial-build-a-simple-rss-reader-for-iphone/

中的SIMPLE RSS阅读示例

它使用parseXML加载RSS源。

这是我遇到的问题。对于以下RSS提要示例,我无法将其加载到Feed中。想出一个无法连接的错误。但是在我的Mac RSS阅读器上工作正常,所以我知道链接很好。

有关为何无法加载此特定Feed的任何想法,但它可以加载其他人好吗?

http://www.okstate.com/rss.dbml?db_oem_id=200&media=news

感谢。

5 个答案:

答案 0 :(得分:4)

我刚刚发布了open source RSS/Atom Parser for iPhone,希望它可能有用。

我也很乐意听到你的想法!

答案 1 :(得分:2)

根据我的经验,HTML标记会导致RSS解析器在大多数情况下失败。我遇到过这样的问题,我遇到了很多解析器类(寻找最终的解析器,我没找到)

我的猜测是像

这样的实体
's

对您的崩溃负责。我的崩溃通常就是这种情况。这也导致我决定创建一个“代理服务器”来预先解析XML,然后再将其发送到iPhone(这给了我缓存,扩展和其他一些东西的优势)。我相信那里有可靠的解决方案,但是很难为这么多RSS实现编写解析器。

P.S:W3C validates此Feed为“有效”,因此它确实是“我们的”问题..

答案 2 :(得分:2)

你的问题可能在于:

  1. Unicode字符(即我在Feed中看到一些带有两个点的o)
  2. 您拥有的代码不正确地尊重CDATA部分
  3. 要找出是哪种情况,请将Feed文件保存到本地磁盘并通过代码加载,以确保错误发生。

    对文件执行二进制搜索以查明特定RSS条目是否导致问题(即删除除第一个rss条目之外的所有条目并查看问题是否存在。如果存在,那么问题就在那里,如果它不会将一半的rss条目放回文件中并重复)

答案 3 :(得分:1)

我一直遇到类似的问题。我还没有确定答案,但我注意到RSS 2比其他人更容易解析。

答案 4 :(得分:1)

有许多RSS源包含无效的XML,通常是因为他们在服务器端使用HTML模板被不熟悉XML的人一起攻击。我看到过不正确的转义(或非转义)HTML帖子内容,缺少关闭标签,嵌套严重的标签等等。

如果您希望能够解析任意提要,则必须清理错误的XML。通常的方法是使用操作系统中包含的“htmlTidy”库。这可以清理XML和HTML。

这个例子你跟随使用NSXMLParser - 我不知道为什么。它是一个较低级别的API,它不支持整理。我建议改用NSXMLDocument。在该API中有一个标志,它将告诉它在解析XML时使用整洁。此API还将XML作为一个易于使用的方便的元素树返回给您。