MediaRSSParser, 在 AFNetworking 2.0上,一个易于使用的媒体RSS解析器

分享于 

10分钟阅读

GitHub

  繁體 雙語
An easy-to-use parser for Media RSS, built on AFNetworking 2.0
  • 源代码名称:MediaRSSParser
  • 源代码网址:http://www.github.com/JRG-Developer/MediaRSSParser
  • MediaRSSParser源代码文档
  • MediaRSSParser源代码下载
  • Git URL:
    git://www.github.com/JRG-Developer/MediaRSSParser.git
    Git Clone代码到本地:
    git clone http://www.github.com/JRG-Developer/MediaRSSParser
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/JRG-Developer/MediaRSSParser
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    MediaRSSParser

    Build Status

    MediaRSSParser 是一个用于媒体RSS的easy-to-use解析器,构建在 AFNetworking

    MediaRSSParser 受到启发,最初基于 BlockRSSParser

    如果从 BlockRSSParser 切换到 MediaRSSParser,应该很简单,因为 public 方法签名类似于。

    CocoaPods安装

    MediaRSSParser 添加到项目中的简单方法是使用 CocoaPods命令。 在你的Podfile 中添加以下内容,以便在你的工作区中包含 CocoaPods:

    pod 'MediaRSSParser', '~> 1.0'

    那么就像平常一样运行 pod install

    手动安装

    或者,也可以通过执行以下操作在项目中手动包含 MediaRSSParser:

    在本地克隆这里 repo,或者按 Download ZIP 键直接下载最新的master 提交。

    MediaRSSParser 文件夹拖到应用程序项目中,确保 Copy items into destination group's folder (if needed) 已经检查。

    AFNetworking 添加到项目( 它是这里库的依赖项)。

    :如何使用

    MediaRSSParser 旨在使媒体RSS提要快速而轻松地工作。

    在需要进行RSS解析的地方添加 #import"MediaRSSParser.h",或者在任何需要使用模型的地方添加 #import"MediaRSSModels.h"

    使用 RSSParser 类从URL字符串解析RSS提要。

    在示例中:

    
    RSSParser *parser = [[RSSParser alloc] init];
    
    
    self.parser = parser;
    
    
    
    __weak typeof(self) weakSelf = self;
    
    
    
    NSString *feedURLString = @"...";
    
    
    NSDictionary *parameters = @{@"...": @"..."};
    
    
    
    [self.parser parseRSSFeed:feedURLString
    
    
     parameters:parameters
    
    
     success:^(RSSChannel *channel) {
    
    
     weakSelf.feedItems = channel.items;
    
    
     [weakSelf.tableView reloadData];
    
    
     } 
    
    
     failure:^(NSError *error) {
    
    
     NSLog(@"An error occurred: %@", error);
    
    
     }];
    
    
    
    
    • 最常用的模型是 RSSChannel,它表示一个 RSS channel 元素和 RSSItem,表示一个 RSS item 元素。

    查看 RSSChannel 或者 RSSItem的头文件以获得这些模型的文档。

    ( 也可以克隆这个 repo,并检查项目测试单元以获取示例的示例)。

    RSS协议

    让我们说实话:RSS是世界上最糟糕的协议之一。 不幸的是,它也是最常用的。

    为什么要这样? 因为它相对容易安装,这是因为服务器端开发人员很容易安装;它一直存在,而且它的功能非常常见。

    RSS有很多问题,但至少存在两个主要问题:

    • 虽然有的RSS规范,但是它有许多不同的解释和/或者变体。

    因此,同一 element 在内容提供者之间可能会稍有不同,或者有时以不同的方式命名( 比如。 如果提供程序符合规范,但可能缺少必需的元素或者不正确的NAME 元素( 所以它真的不符合),那么某些提供者可能会说它们符合规范。

    为了缩小项目范围,RSS 2.0 将被视为基础规范,如这里 RSS 2.0规范镜像所定义的。

    • RSS规范还允许通过名称空间添加新元素。

    因此,媒体RSS实际上只是 RSS 2.0的名称空间。

    再次缩小项目范围,Media RSS 将被视为在这个媒体RSS镜像定义的名称空间规范。

    这里项目旨在通过执行以下操作来缓解这些问题:

    为支持不同元素名称( 比如 )的( 请参见 RSSParser.m private 方法) 匹配器方法允许不同的元素名/属性(。 itementry 都映射到 RSSItem 对象)。

    只要添加了它的他RSS命名空间元素,只要它们是( i )的( 根据流行的要求,如果你愿意,其他开发者使用这个项目),( 二) 就有一个描述命名空间规范的网页。

    注意:如果你对项目非常特别,需要创建自己的RSS命名空间,这不太可能使它成为主要的repo 文件。

    相反,你将更好地分叉这个 repo,在自己的分支中进行更改,并定期更改主 repo 中的pulling

    项目目标

    MediaRSSParser 有特定的目标:

    主要目标

    • 使用RSS提要和第三方开发人员使用这个存储库尽可以能简单。

    这意味着,第三方开发人员可以很容易地回答这样的问题:

    • "在哪里可以找到当前版本的RSS和/或者媒体RSS的规格"?

    --看到了主文件( MediaRSSParser.h 或者 MediaRSSModels.h ),它有指向文档的链接,但是这里也是如这里: RSS 2.0媒体 RSS 1.5.1.

    • 这个模型上的这个属性是什么"?

    --查看模型的头文件,其中包括每个属性的inline 文档。

    • "解析器如何工作,我如何知道它将在未来的版本中继续工作""?

    --可以看到这两个使用例子的广泛的reads-like-sentences单元测试,以及关于如何工作的代码文档。

    次要目标

    记录所有的( 100%文档的所有头文件)。 这与"使它尽可能容易使用"一起出现。

    单元测试 所有内容( 100%个代码行的单元测试)。 这有助于确保代码正常工作并在将来继续工作。

    MediaRSSParser vs BlockRSSParser

    MediaRSSParser 最初构建在 BlockRSSParser 之上,但它有几个设计差异和目标:

    主要区别是 MediaRSSParser 支持媒体 RSS ( 请参见 http://www.rssboard.org/media-rss ),当前 BlockRSSParser ( 5/13/14) 缺少这种支持)。

    MediaRSSParser 还显式提供与复杂的RSS元素对应的模型对象。 尤其是 RSSChannel 对应 channel 元素,RSSItem 对应于 item 元素,RSSMediaContent 对应于 media:content 元素等等。

    BlockRSSParser 使用 NSDictionary 对象来表示某些复杂元素或者省略这些元素。 在未来,BlockRSSParser 如何容易支持附加元素或者命名空间( 例如媒体 RSS ) 也不是一个很好的计划。

    MediaRSSParser 使用本机对象而不是字典的主要原因是: 对于使用本机对象的开发者来说,使用对象/键字典对通常更容易,而( 二) 只需添加代表它们的合适的模型对象就可以支持其他复杂的元素,例如添加代表它们的模型对象。

    这个仓库的Git历史

    MediaRSSParser 基于 BlockRSSParser,并围绕版本 2.1 进行分离。 因此,MediaRSSParser的第一个版本实际上是 BlockRSSParser的一个发散的3.0 版本。 因此,BlockRSSParser的git历史也包含在 MediaRSSParser 存储库中。

    为了避免混淆,MediaRSSParser1.0 ( 因为它现在是一个完全独立于 BlockRSSParser的项目) 上启动了自己的版本管理。

    欢迎使用补丁和常用标签添加 !

    要贡献:

    fork 这里 repo。

    更改你的更改。

    为更改( 根据需要) 编写单元测试。

    如果以前从未编写过单元测试,则可以 !

    你可以通过checking的优秀网站来学习,包括一个关于unit单元测试的部分。

    • 为你的属性和/或者 public 方法添加文档注释。

    如果你建议添加新标记( 比如。 支持另一个命名空间),必须包含指向联机文档的链接。

    这个项目是CocoaPods规范 repo的一部分,其中包含了针对 CocoaDocs的每个pod的appledoc解析文档。

    如果你不熟悉 appledoc,请查看有关它的Mattt ( of @matt ) 介绍性帖子。

    • 提交请求请求。

    确保包含你为什么需要这种更改的原理( 尤其对于新的标签添加)。

    • 最后但并非最重要的是,坐在后面,帮助你的开发人员更轻松地活动 !

    谢谢 !

    许可证

    BlockRSSParserAFNetworking 一样,这个项目在MIT许可协议下是可用的。


    PAR  USE  parse  parser  媒体  RSS  
    相关文章