CozyRSS开发记录7-了解RSS

时间:2021-07-26 11:54:35

CozyRSS开发记录7-了解RSS

1、初窥RSS

多找几个RSS源就会发现,有的源是用Atom协议提供的,有的源是RSS协议提供的。RSS协议有过几个版本,0.9、1.0和2.0等,理论上支持2.0是能向前兼容1.0的。这里我们先只考虑RSS2.0。

首先,我下载了一份最新的配色网的RSS。

CozyRSS开发记录7-了解RSS

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

CozyRSS开发记录7-了解RSS

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的对象查看器能看到的类如下:

CozyRSS开发记录7-了解RSS

在.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了。