CozyRSS开发记录7-了解RSS
CozyRSS开发记录7-了解RSS
1、初窥RSS
多找几个RSS源就会发现,有的源是用Atom协议提供的,有的源是RSS协议提供的。RSS协议有过几个版本,0.9、1.0和2.0等,理论上支持2.0是能向前兼容1.0的。这里我们先只考虑RSS2.0。
首先,我下载了一份最新的配色网的RSS。

之前说过,RSS是XML的子集,我们先看看这份XML的DOM结构:

Channel下为RSS的主要内容,我们姑且称它为RssFeed,而每一个item是一条可读的RSS内容,我们称它为RssItem。
2、System.ServiceModel.Syndication
在.NET中,已经有了非常完善的RSS解析和生成的封装。在CozyRss中,我们用到的是在System.ServiceModel.Syndication这个命名空间里的实现。另外,xamarin也有几乎一样的RSS处理封装提供,针对Web和UWP,同样也有。
我们先大体看看这个命名空间下都有些什么。
MSDN的相关网页:
https://msdn.microsoft.com/zh-cn/library/system.servicemodel.syndication.aspx
VS的对象查看器能看到的类如下:

在.NET Core Libraries (CoreFX)找了下,发现并没有System.ServiceModel.Syndication的代码,但是还是在Mono中找到了。
根据我的阅读理解,大体介绍一下一些主要的类:
Atom10FeedFormatter、Atom10ItemFormatter...
序列化处理Atom1.0格式的xml
Rss20FeedFormatter、Rss20ItemFormatter...
序列化处理RSS2.0格式的xml
ServiceDocument
->WorkSpace
->ResourceCollectionInfo
->CategoriesDocument
服务文档包含工作区,工作区包含资源集合,资源包含分类文档集,然而这一堆基本上都是Atom格式的,所以先不管,包括对应的CategoriesDocumentFormatter等。
Rss20FeedFormatter、Rss20ItemFormatter
对应SyndicationFeed、SyndicationItem
剩下的,就是一些model封装类和辅助类了。
在了解了RSS和System.ServiceModel.Syndication后,我们马上就要开始处理RSS了。
CozyRSS开发记录7-了解RSS的更多相关文章
- CozyRSS开发记录21-默认RSS源列表
CozyRSS开发记录21-默认RSS源列表 1.默认列表 在第一次使用CozyRSS的情况下,我们让它内置五个RSS源吧: 2.响应RSS源的更新 先不处理RSS源列表项的点击,响应下下拉菜单里的更 ...
- CozyRSS开发记录12-MVVM,绑定RSS源和数据
CozyRSS开发记录12-MVVM,绑定RSS源和数据 1.引入MvvmLight MVVM最近貌似在前端那块也挺火的.据说,WPF的程序如果不用MVVM,那跟MFC和winform的,也没啥区别. ...
- CozyRSS开发记录15-获取和显示RSS内容
CozyRSS开发记录15-获取和显示RSS内容 1.内容列表 我们先给RSSContentFrame增加一个ViewModel,里面和RSS源列表一样,提供一个ObservableCollectio ...
- CozyRSS开发记录11-够用的RSS源管理
CozyRSS开发记录11-够用的RSS源管理 1.分析需求 先随手画个用例图来看看有哪些参与者会访问我们的源管理: 2.搞一个Controller类 根据前面分析得出的用例图,我们就可以来设计实现一 ...
- CozyRSS开发记录9-快速实现一个RSS解析器
CozyRSS开发记录9-快速实现一个RSS解析器 1.再读RSS标准 既然需要自己实现一个RSS解析器,那自然需要仔细的读一读RSS的标准文档.在网上随便找了两份,一份英文一份中文: http:// ...
- CozyRSS开发记录8-解析一份RSS
CozyRSS开发记录8-解析一份RSS 1.使用Rss20FeedFormatter解析RSS 使用Rss20FeedFormatter配合XmlReader来解析RSS非常的简单,几行搞定: 来试 ...
- CozyRSS开发记录18-番外之Atom1.0的支持
CozyRSS开发记录18-番外之Atom1.0的支持 1.对CozyRSS.Syndication批判一番 由于我工作的主要开发语言是c++,所以会看到我的c#代码写得非常朴素,很多语法糖都没有用上 ...
- CozyRSS开发记录17-Html2Xaml
CozyRSS开发记录17-Html2Xaml 1.RssContentView还需要优化 上回做了RssContentView的显示,但是对于rss返回的描述(摘要),连换行的没有,更别说里面还有h ...
- CozyRSS开发记录14-RSS源管理初步完工
CozyRSS开发记录14-RSS源管理初步完工 1.添加源的响应 DialogHost.Show有几个版本的重载,加一个DialogClosingEventHandler参数.我们让添加源对话框的添 ...
随机推荐
- Linux--装好之后要做的几件事(转)
1.删除libreoffice libreoffice虽然是开源的,但是Java写出来的office执行效率实在不敢恭维,装完系统后果断删掉 sudo apt-get remove libreoffi ...
- Sublime Text 中文乱码
STEP1: 安装package control tool 先设置好fq,系统代理设置为fq代理 按Crtl + ~调出控制台,输入如下代码: import urllib2,os; pf='Packa ...
- WebUploader UEditor chrome 点击上传文件选择框会延迟几秒才会显示 反应很慢
chrome52.0.2743.80以上, accept: { title: 'Images', extensions: 'jpg,jpeg,png', mimeTypes: 'image/*' } ...
- 图解c/c++多级指针与“多维”数组
声明:本文为原创博文,如有转载,请注明出处.若本文有编辑错误.概念错误或者逻辑错误,请予以指正,谢谢. 指针与数组是C/C++编程中非常重要的元素,同时也是较难以理解的.其中,多级指针与“多维”数组更 ...
- 烂泥:nginx、php-fpm、mysql用户权限解析
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://ilanni.blog.51cto.com/526870/1561097 本文首发 ...
- 探索ASP.NET MVC框架之路由系统
引言 对于ASP.NET MVC的路由系统相信大家肯定不陌生.今天我们就深入ASP.NET的框架内部来看一下路由系统到底是怎么通过我们给出的地址(例如:/Home/Index)解析出Controlle ...
- Backbone源码阅读手记
Backbone.js是前端的MVC框架,它通过提供模型Models.集合Collection.视图Veiew赋予了Web应用程序分层结构.从源码中可以知道,Backbone主要分了以下几个模块: ( ...
- ReflectionToStringBuilder类
ReflectionToStringBuilder类是用来实现类中的toString()方法的类,它采用Java反射机制(Reflection),通过reflection包中的AccessibleOb ...
- Spring预处理
当需要在某些Spring项目一启动,就执行某些操作时,需要实现改接口ApplicationListener,重写onApplicationEvent方法,将需要的预处理操作全部写在该方法中 当初始化完 ...
- C#夯实基础系列之const与readonly
一.const与readonly的争议 你一定写过const,也一定用过readonly,但说起两者的区别,并说出何时用const,何时用readonly,你是否能清晰有条理地说出个一二三 ...