Hpricot пустой элемент ссылки из RSS - PullRequest
0 голосов
/ 01 декабря 2011

Я сейчас разбираю RSS-канал с помощью Hpricot в Ruby.

Все элементы доступны для извлечения, кроме элемента.

Вот что я делаю:

Гид работает, тогда как ссылка не работает, когда я это делаю ("/link").inspect, он говорит, что это пустой элемент.Хотя, если вы посмотрите на канал, все элементы имеют элементы ссылок со значениями.

doc = Hpricot.parse(open("http://www.highways.gov.uk/rssfeed/rss.xml"))   
(doc/:item).each do |xml_product|
  puts xml_product.search("/guid").first.children.first.raw_string
  puts xml_product.search("/link").first.children.first.raw_string
end

Есть мысли о том, что может быть не так?

1 Ответ

0 голосов
/ 01 декабря 2011

Проблема здесь заключается в неправильном формате xml, который вы пытаетесь получить:

<link />http://www.trafficengland.co.uk/map.aspx?isTrafficAlert=true&amp;lat=53.4363602900352&amp;lon=-2.31328109635184

Следовательно, при подготовке запроса /link вы получаете NoMethod ошибку, поскольку link элементы пусты.

ОБНОВЛЕНИЕ

Кажется, это проблема hpricot.Попробуйте nokogiri вместо:

require 'nokogiri'
require 'open-uri'

doc = Nokogiri::XML(open("http://www.highways.gov.uk/rssfeed/rss.xml"))   
doc.xpath("//item").each_with_index do |xml_product|
  puts xml_product.xpath('guid').text
  puts xml_product.xpath('link').text
end
# =>
     391532
     http://www.trafficengland.co.uk/map.aspx?....
     ....
...