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参数.我们让添加源对话框的添 ...
随机推荐
- Java的多线程机制系列:(二)缓存一致性和CAS
一.总线锁定和缓存一致性 这是两个操作系统层面的概念.随着多核时代的到来,并发操作已经成了很正常的现象,操作系统必须要有一些机制和原语,以保证某些基本操作的原子性.首先处理器需要保证读一个字节或写一个 ...
- 做一个阅读管理APP
背景 由于最近在看的书有点多,所以一直想找一个能够管理阅读进度的书(鄙人记性不是很好,两天不看就忘了)可惜Android平台上一直找不到合适的APP: 有没有读书进度管理的网站或软件啊? 有没有记录读 ...
- hdu2929 Bigger Is Better
题意 给出n根木棍,要你拼一个最大的数,并且这个数是m的倍数. 题解 显然越长的数越大.设\(dp[i][j]\)表示用i根木棍并且\(mod m = j\)的最大长度. 我们很容易想出dp方程,再用 ...
- Android热修复AndFix
热修复主要用来修复代码.修复bug.添加独立的功能,他的原理主要是操作PathClassLoader.DexClassLoader. PathClassLoader是类加载器,DexClassLoad ...
- Linux快速体验
目录结构: /:根目录,根目录下一般只存放子目录,不存放文件./bin: 存放可执行的二进制文件,如常用的命令ls. tar.mv. cat等./boot: 存放linux系统启动时需要的一些文件./ ...
- QT读取文本(字符串)最后一行的方法
QString str; QTextStream ts(&str); str = this->toPlainText(); ts.seek(str.lastIndexOf("- ...
- python基础知识(二)
以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍
- [Network] HTML、XML和JSON学习汇总
写在前面:楼主也是刚刚接触这方面的知识,之前完全是零基础,后来经朋友推荐了几个不错的博文,看完以后豁然开朗.但是此博文更加偏重于基础知识介绍(其实更深的楼主也还不了解,这方面的大神请绕道),只是分享个 ...
- http协议相关-待续
// 关于http的东西 function httpAction() { // http://localhost/blog/testurl.php?id=5 到目前为止 // 获取当前域名 // 获取 ...
- jquery-创建弹出框原理
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...