IDNFeedParser 一个简单易用的Rss解析库(Objective-C)
2015-06-29 01:13
471 查看
IDNFeedParser 一个简单易用的Rss解析库(Objective-C)
项目在GitHub上的地址为https://github.com/photondragon/IDNFeedParser最近在搞一个RSS阅读器,需要解析RSS,所以就搞了这么个RSS解析库。
在MWFeedParser的基础上修改而来。之所以要重新封装,是因为MWFeedParser的接口有点复杂,使用起来不太方便,而且中文编码解析会乱码。
重新封装后的IDNFeedParser,只需要一两行代码就可以完成RSS解析,不用再写那么多delegate方法了。
主要做了以下改动:
简化接口,去掉异步操作和delegate,只留下同步操作;
把下载与解析分开(解耦),方便对RSS数据进行缓存。
识别RSS频道的图像信息,为FeedInfo增加了image属性
自动分析文章摘要信息,为FeedItem增加了image属性
修复编码为中文时(如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方式返回数据,反而很难用。
最重要的是好处还是接口一目了然,简单易用!
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 写到世界充满爱:专访 RSSHub 作者 DIYgod
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- SXNA RSS Blog 聚合器程序
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 用 Asp.Net 建立一个在线 RSS 新闻聚合器的方法
- ASP.NET读取RSS的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- Python处理RSS、ATOM模块FEEDPARSER介绍
- php生成rss类用法实例
- php实现的RSS生成类实例
- php生成RSS订阅的方法