65.9K
CodeProject 正在变化。 阅读更多。
Home

RSS 阅读器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.80/5 (49投票s)

2004年2月15日

4分钟阅读

viewsIcon

409596

downloadIcon

17554

一个易于使用的 RSS feed 阅读器

Sample Image - RssReader.gif

引言

Code Project 上已经有一个相当全面的 RSS 工具:RSS 2.0 Framework,由 "Jerry Maguire" 编写。 RssReader 类旨在提供一个简单的工具,用于从远程和本地源检索 RSS feed,而无需在每个需要 RSS feed 的应用程序中解析 XML。正如其名称所示,该类仅读取 RSS feed - 它没有编写 feed 的功能。

RSS 格式

RSS (Really Simple Syndication) 规范可以在 http://blogs.law.harvard.edu/tech/rss 找到。它是一种 XML 格式,用于检索其他网站的标题或最新文章详细信息,例如。例如,纽约时报提供其主要标题的 RSS feed,您可以在自己的网站或应用程序中访问和放置这些标题。

RSS 格式确实名副其实 - 简单。 如下图所示,它包含一个根 RSS 节点,其下有一个 channel 节点。 在此 channel 节点内,有许多元素用于描述 feed。 然后,在这些元素之后是一系列文章、标题、故事或它们以 item 节点形式包含的任何内容。 每个 item 节点都包含描述自身的元素 - 标题、描述和链接是 3 个必需的元素,还有其他可选元素,您可以在规范和 RssReader 类文档中阅读相关内容。

Typical XML format of an RSS document

RssFeed 和 RssItem 对象

鉴于 RSS 格式的简单性,将其结构映射到值类型 (struct) 很容易。 如下图所示, RssFeed 对象。

RssFeed object

其中包含 RSS 提供的大部分字段(此版本中尚未实现某些字段)。 存在一个 Items 属性,其中包含 RssItem 对象的集合。 RssItem 类型映射到 RSS item,其中包含 RssItem 可用的的大部分字段。

RssItem object

RssReader 类有一个主要方法 RetrieveFeed,它给定一个 URL,返回一个 RssFeed 对象。 如果您想打开一个本地文件,此 URL 可以是 file:// 格式以及标准的 http:// 格式(尚未尝试使用 ftp://)。

静态方法

我添加了几个 static 方法,以使过程更简单,它们都是不言自明的。 类库中还包含一个名为 RssHtmlMaker 的类。 这是一个我编写的简单工具,用于将 RssFeed 对象转换为 HTML(或任何其他格式)文档,给定一个包含标记的模板。 这些标记映射到可用的 RSS 字段。 标记的详细信息在文档中。

RDF

RssReader 中包含读取简单 RDF 格式 feed 的功能。 RDF (资源描述框架) 是一个 W3C XML 格式,用于描述 Web 资源。 该格式用于描述 Web 资源的内容,包括标题、描述和 URL 等项目。 我想使用几个 RDF feed,特别是 slashdot.org feed 和 register.com feed。 这些 RDF 文档的主要区别
与其 RSS 对应项相比, <items> 节点是主根 RSS(或在这种情况下为 rdf)节点的子节点,而不是 <channel> 节点。 RssReader 类通过成员变量 RdfMode 来处理此问题,该变量默认设置为 false。 RDF 规范可以在 http://www.w3.org/TR/2004/REC-rdf-primer-20040210/ 找到。

最后说明

最后需要注意的一点是:为了避免被 feed 的主机 ip 封禁,并且最多只是让 feed 提供商感到不快,我建议在获取 feed 后缓存它们,而不是在每次需要时都检索 feed。 这可以通过序列化 RssFeed 类,或创建 feed 的 HTML 版本并将其保存到磁盘来完成。

希望该类对人们有用 - 我还没有找到任何关于 C# RSS feed,如果有的话,请在下面留下一个 URL。

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.