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参数.我们让添加源对话框的添 ...
随机推荐
- host 文件
艾玛,果然一个破的小问题也能纠结好久!不过终于过去了... 1. 机器上的host文件目录一般是 /etc/hosts 主要可能会涉及一些网站的安全访问,把网站加入hosts也就意味着 加入了白名单 ...
- bzoj 4557: [JLoi2016]侦察守卫 树归
bzoj 4557: [JLoi2016]侦察守卫 设f[x][j]表示覆盖以x为根的子树的所有应该被覆盖的节点,并且以x为根的子树向下j层全部被覆盖的最小代价. 设g[x][j]表示与x距离大于j全 ...
- [uva11722&&cogs1488]和朋友会面Joining with Friend
几何概型,<训练指南>的题.分类讨论太神啦我不会,我只会萌萌哒的simpson强上~这里用正方形在y=x-w的左上方的面积减去在y=x+w左上方的面积就是两条直线之间的面积,然后切出来的每 ...
- 基于Arduino、STM32进行红外遥控信号接收
catalogue . 遥控器原理简介 . 红外遥控原理 . 常见红外遥控器红外线信号传输协议 . 遙控器的发展 . 实验过程 . 攻击面 . 基于STM32实现红外信号解码 1. 遥控器原理简介 0 ...
- Zabbix监控nginx status
nginx开启status ./configure --with-http_stub_status_module nginx.conflocation /statusx35 { stub_status ...
- C#重构之道
定义 重构的定义:在不改变软件可观察行为的前提下,改善其内部结构. 其中,不改变软件行为,是重构最基本的要求.要想真正发挥威力,就必须做到“不需了解软件行为”. 如果一段代码能让你容易了解其行为,说明 ...
- <<< List<HashMap<String, Object>> 及 HashMap<String, Object> 的用法
//(赋值)最简单的一种hashMap赋值方式 List<HashMap<String, Object>> aMap= new ArrayList<HashMap< ...
- MySQL 常用函数和语句笔记
CONCAT()函数 CONCAT()函数代表着字符串的链接,例子有 SELECT COUNT(1) FROM ums_commodity WHERE 1 = 1 and deleted=0 and ...
- pycloudtag 标签云
原创,转载请标明 QQ:231469242 # -*- coding: utf-8 -*- """Python3.0 Created on Sat Nov 26 08:5 ...
- 20145204&20145212信息安全系统实验一
信息安全系统实验报告 博客链接