当我尝试访问Nokogiri对象的[:href]属性时,它返回nil - 当它不是

时间:2012-05-25 16:22:13

标签: ruby nokogiri

这是我正在处理的Nokogiri对象:

#<Nokogiri::XML::Element:0x81020c70 name="p" children=[#<Nokogiri::XML::Text:0x8101f3fc " May 12 - ">, #<Nokogiri::XML::Element:0x8101f3ac name="a" attributes=[#<Nokogiri::XML::Attr:0x8101f258 name="href" value="http://auburn.craigslist.org/cpg/3011653835.html">] children=[#<Nokogiri::XML::Text:0x8101ee20 "Wordpress Designer">]>, #<Nokogiri::XML::Text:0x8101ecb8 " - ">]>

它存储在一个数组中,所以当我这样做时:

my_array.first[:href]

它返回nil。

当我这样做时

my_array.first.text

它返回:

  

5月12日 - Wordpress Designer -

哪个是对的...如何从这个特定记录中获取href?

1 个答案:

答案 0 :(得分:2)

如果您发布的对象确实是my_array中的第一个元素,那么my_array.first将返回p元素,而不是a。看起来你想要的a元素是这个对象的第二个子元素,所以为了访问它你实际上想要:

my_array.first.children[1][:href]

您也可以直接使用CSS或Xpath表达式访问它。

当然我真的只是在猜测,因为你没有发布任何实际的代码。