簡體   English   中英

XPATH-Ruby-Nokogiri-節點集

[英]XPATH - Ruby - Nokogiri - Nodeset

我有一個表的NodeSet,看起來與此類似:

<table cellpadding="1" cellspacing="0" width="100%" border="0">
  <tr>
      <td colspan="9" class="csoGreen"><b class="white">Bill Statement Detail</b></td>
  </tr>
  <tr>
      <td><b>Bill Date</b></td>
      <td"><b>Bill Amount</b></td>

      <td"><b>Bill Due Date</b></td>
      <td"><b>Bill (PDF)</b></td>
  </tr>

<tr vAlign="top">
  <td>blahA</td>
  <td>blahB</td>
  <td>blahC</td>

  <td><a href="javascript: void(0);" onclick="javascript:window.open('/cso/displaypdfbill?selectedBillkey=447403730','_blank');">View Bill</a></td>
</tr>

現在,我計划遍歷表中的每個onclick。

我一直在嘗試不成功地遍歷NodeSet。

我以許多失敗的嘗試而告終,但我想它最終看起來像這樣:

doc_list.each_element ("//a[td/text()='onclick']/@href") do |  |
      #here I want to scan and save BlahA into a Variable 
end

您想通過onclick遍歷所有內容嗎? 也許:

doc.css('*[onclick]').each do |el|
    puts el[:onclick]
end

編輯:可能真正想要的是從第3行開始的每一行的第一個td。在這種情況下:

table.css('td[1]')[2..-1].each do |td|
    puts td.text
end

有效執行此操作的關鍵不在您的問題中,而是在您的注釋“我要提取存在onclick的tr中的第一個td”中。

該表達式正是這樣做的:

doc.xpath('//tr[td/a/@onclick]/td[1]/text()')

實際上,這將為您提供所有此類匹配項的集合。 無需迭代。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM