Разбор ATOM в Ruby с пользовательскими пространствами имен - PullRequest
1 голос
/ 31 июля 2010

Я пытаюсь прочитать этот поток ATOM (http://ffffound.com/feed),, но не могу получить ни одно из значений, определенных как часть пространства имен, например, media: content и media: thumbnail.

Нужно ли мне, чтобы синтаксический анализатор знал о пространствах имен?

Вот что я получил:

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 Ответ

1 голос
/ 01 августа 2010

Полагаю, для этого вам придется использовать 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

Я надеюсь, что это указывает на правильное направление.

...