2011-06-22 28 views
2

當我查找一個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] 

陣列中只有一個元素I,我不需要循環任何東西.each。有沒有辦法讓這一行?

+1

有你'at_xpath'試過嗎? –

回答

1

最後我做這樣的事情:

t = a.xpath("tr/td[@class='team']/img") 
away = t[0]['id'] 
home = t[1]['id'] 
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 ::元素。