模块 RSS

RSS 读取和写入

Really Simple Syndication (简单信息聚合, RSS) 是一系列描述“信息流”的格式,它们是特别构造的 XML 文档,允许感兴趣的人订阅并接收来自特定网络服务的更新。标准库的这部分提供了读取和创建这些信息流的工具。

标准库支持 RSS 0.91、1.0、2.0 和 Atom,一种相关的格式。以下是一些指向这些格式标准文档的链接

消费 RSS

如果您想用您的 Ruby 代码读取别人的 RSS 信息流,您来对地方了。这很容易做到,但我们需要 open-uri 的帮助

require 'rss'
require 'open-uri'

url = 'https://ruby-lang.org.cn/en/feeds/news.rss'
URI.open(url) do |rss|
  feed = RSS::Parser.parse(rss)
  puts "Title: #{feed.channel.title}"
  feed.items.each do |item|
    puts "Item: #{item.title}"
  end
end

正如您所见,主力是 RSS::Parser#parse,它接收信息流的来源和一个对信息流执行验证的参数。我们会得到一个对象,该对象拥有我们信息流中的所有数据,可以通过方法访问。此示例显示从 channel 元素中获取标题,并循环访问项列表。

生成 RSS

生成我们自己的 RSS 信息流也很容易。让我们创建一个非常基本的信息流

require "rss"

rss = RSS::Maker.make("atom") do |maker|
  maker.channel.author = "matz"
  maker.channel.updated = Time.now.to_s
  maker.channel.about = "https://ruby-lang.org.cn/en/feeds/news.rss"
  maker.channel.title = "Example Feed"

  maker.items.new_item do |item|
    item.link = "https://ruby-lang.org.cn/en/news/2010/12/25/ruby-1-9-2-p136-is-released/"
    item.title = "Ruby 1.9.2-p136 is released"
    item.updated = Time.now.to_s
  end
end

puts rss

正如您所见,这是一个非常类似 Builder 的 DSL。这段代码将输出一个包含一项的 Atom 信息流。如果我们需要第二项,我们将使用 maker.items.new_item 创建另一个块并构建第二个项。

版权 © 2003-2007 Kouhei Sutou <[email protected]>

您可以在与 Ruby 相同的条款下重新分发和/或修改它。

在以下位置还有 RSS 作者的附加教程:www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser%3A%3ATutorial.en

常量

AVAILABLE_PARSERS

所有可用解析器的列表,以常量的形式。

AVAILABLE_PARSER_LIBRARIES

所有可用于解析的库的列表。

CONTENT_PREFIX

Content XML 命名空间的前缀。

CONTENT_URI

Content 规范的 URI

DC_PREFIX

Dublin Core XML 命名空间的前缀。

DC_URI

Dublin Core 规范的 URI

DublincoreModel

为了向后兼容

IMAGE_ELEMENTS

此常量保存包含图像元素名称的字符串,带有适当的前缀。

IMAGE_PREFIX

Image XML 命名空间的前缀。

IMAGE_URI

Image 规范的 URI

ITUNES_PREFIX

iTunes XML 命名空间的前缀。

ITUNES_URI

iTunes 规范的 URI

SLASH_PREFIX

Slash XML 命名空间的前缀。

SLASH_URI

Slash 规范的 URI

SY_PREFIX

Syndication XML 命名空间的前缀。

SY_URI

Syndication 规范的 URI

TAXO_ELEMENTS

所有分类元素及其适当命名空间的列表。

TAXO_PREFIX

Taxonomy XML 命名空间的前缀。

TAXO_URI

Taxonomy XML 命名空间规范的 URI

URI

RSS 1.0 规范的 URI

VERSION

RSS 的当前版本