模块 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
- URI
- VERSION
RSS
的当前版本