IDNFeedParser 一个简单易用的Rss解析库

标签: idnfeedparser rss 解析 | 发表时间:2015-06-30 00:25 | 作者:photondragon
出处:http://www.iteye.com

IDNFeedParser 一个简单易用的Rss解析库

项目在GitHub上的地址为 https://github.com/photondragon/IDNFeedParser

最近在搞一个RSS阅读器,需要解析RSS,所以就搞了这么个RSS解析库。 
MWFeedParser的基础上修改而来。之所以要重新封装,是因为MWFeedParser的接口有点复杂,使用起来不太方便,而且中文编码解析会乱码。

重新封装后的IDNFeedParser, 只需要一两行代码就可以完成RSS解析,不用再写那么多delegate方法了。

主要做了以下改动:

  1. 简化接口,去掉异步操作和delegate,只留下同步操作;
  2. 把下载与解析分开(解耦),方便对RSS数据进行缓存。
  3. 识别RSS频道的图像信息,为FeedInfo增加了image属性
  4. 自动分析文章摘要信息,为FeedItem增加了image属性
  5. 修复编码为中文时(如GB2313),识别出来的信息为乱码的问题

这个库使用起来非常简单,只要把IDNFeedParser目录下的源文件拷贝到你的项目中,然后 #import "IDNFeedParser.h"就可以使用了

简单用法:

    // 获取RSS源信息
IDNFeedInfo* info = [IDNFeedParser feedInfoWithUrl:@"http://www.zhihu.com/rss"];
// 获取文章列表
NSArray* items = [IDNFeedParser feedItemsWithUrl:@"http://www.zhihu.com/rss"];

下载和解析分离的用法:

    NSString* rssUrl = @"http://www.zhihu.com/rss";
// 下载rss原始Data
NSData* rssData = [IDNFeedParser dataFromUrl:rssUrl];

// 解析RSS源信息
IDNFeedInfo* info = [IDNFeedParser feedInfoWithData:rssData fromUrl:rssUrl];

// 获取文章列表
NSArray* items = [IDNFeedParser feedItemsWithData:rssData fromUrl:rssUrl];

如果要在后台线程解析RSS,用GCD可以很方便地实现:

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    // 获取文章列表
    NSArray* items = [IDNFeedParser feedItemsWithUrl:feedInfo.url];

    if(items==nil) //失败
        NSLog(@"获取文章列表失败");
    else //成功
    {
        // 解析完成后在主线程更新显示
        dispatch_async(dispatch_get_main_queue(), ^{
            [self showFeedItems:items];
        });
    }
});

为什么接口只提供同步方法,不提供异步方法和delegate?

因为同步方法非常灵活,可以很方便地结合GCG或者NSOperation使用以实现异步操作; 
而且很多开发者都有自己的多线程组件,如果用delegate方式返回数据,反而很难用。 
最重要的是好处还是接口一目了然, 简单易用

 




已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [idnfeedparser rss 解析] 推荐:

IDNFeedParser 一个简单易用的Rss解析库

- - 移动开发 - ITeye博客
IDNFeedParser 一个简单易用的Rss解析库. 最近在搞一个RSS阅读器,需要解析RSS,所以就搞了这么个RSS解析库. MWFeedParser的基础上修改而来. 之所以要重新封装,是因为MWFeedParser的接口有点复杂,使用起来不太方便,而且中文编码解析会乱码. 重新封装后的IDNFeedParser,.

RSS Never Die

- - 温国兵的随想录
RSS( 简易信息聚合)是一种消息来源格式规范,用以聚合经常发布更新数据的网站,例如博客文章、新闻、音频或视频的网摘. RSS 文件(或称做摘要、网络摘要、或频更新,提供到频道)包含全文或是节录的文字,再加上发布者所订阅之网摘数据和授权的元数据. RSS 的第一个版本为 RDF Site Summary,在 1999 年三月由美国网景公司的 Guha 为了用在 My.Netscape.Com 门户网站而开发.

RSS走到了尽头?

- 灰灰 - Solidot
在Twitter和Facebook实时信息时代,10年历史的RSS是否无可用之地了. RSS阅读器Bloglines在宣布关闭服务时(后被MerchantCircle收购)称,即时消息导致其用户大量流失. 现在Mozilla似乎要给予濒死的RSS最后一击:Firefox 4 URL地址栏移除了RSS按钮,它被转移到“书签”菜单下.

我的RSS推薦列表

- Vince - AVshare 墙外博客
在推特上分享資源已經有不短的一段時間了,但是始終是不可能跟上AV廠商發片的速度,我也不可能天天宅在家裡,趴在電腦前更新. 正所謂授人以鱼不如授人以渔,分享一下我的Google Reader中的一些RSS資源給大家,雖然不可能緊跟最新潮流,但也相去不遠了. 首先,可能有些同學還不知道神馬叫RSS,根據WIKI描述,RSS(简易资讯聚合)是一种消息来源格式规范,用以发布经常更新资料的网站,例如部落格文章、新闻、音讯或视讯的网摘.

RSS对生产力有害

- Johnny - Solidot
Ars Technica在劳工节周末发表了多篇评论性文章,其中一篇谈到了RSS不利于生产力和头脑清醒(中文). 作者称,她基本上在清醒的时候每5分钟就要扫一下RSS,以避免遗漏任何重要新闻和朋友家人博客的动态. RSS仿佛是生活中缺一不可的东西. 但在今年8月份,她经历了一次长达两周的“逃离RSS”体验,认识到RSS其实并不那么重要,她对重大科技新闻依然了如指掌,而且速度更快、效率更高,并且可以随时去阅读想要阅读的深度内容.

复辟 RSS?先别着急

- - TechCrunch 中文版
无论你再怎么谴责  Feedburner、 Google Reader、 Digg Reader(已于上月底宣布停止运营)、以及其它那些黯然离场的队友们,这个弱小的协议终究是尽力了——所有的迹象都在表明它已经死得不能再死了. 如今,随着 Facebook“剑桥丑闻”的揭露,这里出现了一种新的呼声,要求“重建 RSS”的呼声.

RSS Feed Search Engine -RSS 專用搜尋引擎

- votis - 免費資源網路社群
RSS Search Engine 是由知名部落格 Digital Inspiration 所建置的服務,主要功能是用來協助使用者發掘網路上的熱門 RSS Feeds,如同搜尋引擎,可以填入自己有興趣的主題,它就會找出相關熱門網站,比較不同的是會一併顯示 RSS 資訊,能更方便訂閱網站. 網站名稱:RSS Search Engine.

重磅出击:RSS图标集合

- SourBell - 抽筋儿的话语权 » RSS相关
继续搜罗未在我blog上出现过的RSS图标和相关精美设计:. 点击每张图片即可进入下载页面. 标签: Graph, Icon, logo, RSS设计. 帕兰整理的RSS Feed图标大集合 (2). 增添节日氛围的RSS图标 (5). 可爱动物RSS图标:Feed me. 又有RSS标志设计出炉 (11).

不再关注RSS和微博

- DolaA.M - 陈方毅的灵感日志
在Google Buzz没出现之前,我是Google Reader的重度使用者,从大二到毕业,不知在GR上花费了多少时间,阅读器让我跟上了互联网发展的脚步,但当真正工作后,我发现RSS带给我更多的是负担,而对RSS的畏惧在新浪微博和Buzz出现后尤为严重. 在一边发现优秀RSS源一边又不断退订的严格控制下,订阅种子数一直保存在300左右,加上Share的条目,每天都必须去看一下,如果出差一回,回来肯定是1000+的.

本地RSS阅读器 结集

- Ben - 维以不永伤
无意间翻到早期的文章 NewsFire and NetNewsWire,三年了,大家貌似对RSS的热情退的差不多了,有的甚至诅咒着它明天就最好倒闭似的.确实,海量的信息流前面人们分辨阅读的能力有限.于是,都迷茫了.于是都怪罪到RSS身上来.今天再对今年来的新的Mac桌面RSS阅读器汇总一下.主要以Google Reader为主,也许你能找到几个心仪的..