来自RSS的Hpricot空链接元素

时间:2011-12-01 08:58:46

标签: ruby rss hpricot

我目前正在使用Ruby中的Hpricot解析RSS提要。

除元素外,所有元素都是可检索的。

这就是我正在做的事情:

guid工作,而链接失败,当我做(“/ link”)时。检查它说它是一个空元素。虽然如果您查看Feed,但所有项目都包含值的链接元素。

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 :(得分:0)

此处的问题是您尝试检索的格式错误的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?....
     ....