一个班轮nokogiri xpath查找

时间:2011-06-22 22:31:28

标签: xpath nokogiri

当我用

查找xpath时
b.xpath("td[@class='team']/img").each do |d|
  puts d['id']
end

元素“d”是一个html节点。我可以在其中引用属性。

但是当我尝试在一行中查找相同的元素时,它会以字符串形式返回。

c = b.xpath("td[@class='team']/img")[0]

数组中只有一个元素,我不需要遍历任何.each。有没有办法让这一行?

2 个答案:

答案 0 :(得分:2)

这是我放在一起的测试:

html = '<div id="foo">bar</div>'

b = Nokogiri::HTML.fragment(html)

b.xpath(".//div").each do |d|
  puts d.class
  puts d['id']
end

c = b.xpath(".//div")[0]

puts c.class
puts c['id']

正如您所料,结果输出为:

Nokogiri::XML::Element
foo
Nokogiri::XML::Element
foo

因此,这两种方法实际上都返回了Nokogiri :: XML :: Element类型的对象。

答案 1 :(得分:1)

我最终做了这样的事情:

t = a.xpath("tr/td[@class='team']/img")
away = t[0]['id']
home = t[1]['id']