2012-09-06 196 views
0

我試圖用引入nokogiri使用下面的代碼從HTML文件中提取數據:引入nokogiri和嵌套塊

@doc = Nokogiri::HTML("<table > 
<tr BGCOLOR=\"#eeeeee\"> 
<td>SPILLED</td> 
</tr> 
<tr BGCOLOR=\"#eeeeee\"> 
<td >RUSTING</td> 
</tr> 
</table>") 
@doc.xpath('//tr[@bgcolor="#eeeeee"]').each do |record| 
    print record 
    record.xpath("//td").each do |cell| 
     print cell 
    end 
end 

第一個塊似乎是按預期工作,通過record每次只包含一個的行。另一方面,第二個塊正在爲兩行訪問<td>元素,這對我來說很神祕,因爲record變量在進入內部塊之前顯示它只有一行數據。

「記錄」在兩個行中的數據在內部塊時如何?

+0

可能的重複:http://stackoverflow.com/questions/12301611/nokogiri-xpath-attribute-strange-results/12301766 –

+0

@shioyama你是對的。到OP:從你的單元格選擇器中刪除前導斜線,並且你會得到你期望的結果。 –

回答

0

想通了 - 「td」之前的「//」會導致搜索返回到樹上,超過記錄變量的內容,即記錄中的元素仍然與父元素有關係,等等。消除「//」解決了它。