2011-12-01 52 views
0

我目前使用Ruby中的Hpricot解析RSS源。来自RSS的Hpricot空链接元素

除元素外,所有元素均可检索。

这是我在做什么:

的GUID的作品,而链路发生故障时,当我(“/link").inspect它说,它是一个空元素。虽然如果您查看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 

有什么想法可能是错的?

回答

0

这里的问题是,你尝试检索异常的XML:

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

因此,当你准备/link查询你得到NoMethod错误,因为link元素是空的。

UPDATE

这似乎是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?.... 
    .... 
+0

我似乎无法在源代码中看到此格式不正确的xml吗? – easyjo

+0

我已经更新了我的答案。请看看这个。 – WarHog