使用自定义命名空间在Ruby中解析ATOM

时间:2010-07-31 12:54:26

标签: ruby parsing namespaces rss atom-feed

我正在尝试阅读此ATOM Feed(http://ffffound.com/feed),但我无法获取定义为命名空间一部分的任何值,例如媒体:内容和媒体:缩略图。

我是否需要让解析器知道命名空间?

这就是我所拥有的:

require 'rss/2.0'
require 'open-uri'

source = "http://ffffound.com/feed"
content = "" 
open(source) do |s| content = s.read end
rss = RSS::Parser.parse(content, false)

1 个答案:

答案 0 :(得分:1)

我相信你必须使用libxml-ruby。

gem 'libxml-ruby', '>= 0.8.3'
require 'xml'

xml = open("http://ffffound.com/feed")
parser = XML::Parser.string(xml, :options =>XML::Parser::Options::RECOVER)
doc = parser.parse
doc.find("channel").first.find("items").each do |item|
  puts item.find("media:content").first
  #and just guessing you want that url thingy
  puts item.find("media:content").first.attributes.get_attribute("url").value
end

我希望指出你正确的方向。