2012-02-08 7 views
0

У меня есть NodeSet таблицы, которая выглядит примерно так:XPATH - Рубин - Nokogiri - 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 
+1

Что именно вы хотите извлечь из HTML? –

+0

Я хочу извлечь данные blahA – user1198316

ответ

0

Вы хотите перебрать все с OnClick? Может быть:

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

Edit: что вы вероятно, действительно хотите это первый тд каждой строки, начиная со строки 3. В этом случае:

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

yes Я хочу перебирать все, и этот код работает, но я хочу извлечь первый td в tr, где есть onclick. Это не работает, но что-то вроде этого: 'doc_list.css ('[onclick]'). Each do | el | puts doc_list.xpath ("// tr/td [contains (text(), 'onclick')]"). Текст end' – user1198316

+0

в этом случае: el.parent.parent.at ('td'). – pguardiario

0

Ключ эффективно делать это не в вашем вопросе, но в вашем комментарии «Я хочу извлечь первый td в tr, где есть onclick».

Это выражение делает именно это:

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

На самом деле это даст вам множество всех таких матчей. Никакой итерации не требуется.

Смежные вопросы