2011-01-31 4 views

ответ

2
biggest_table = doc.xpath('//table').max_by do |table| 
    table.xpath('.//tr').length 
end 

Или, в случае, если есть галстук, возможно, вы хотите получить список всех таблиц с наибольшим количеством строк:

# Hash mapping number of rows to array of table nodes 
tables = doc.xpath('//table').group_by{ |t| t.xpath('.//tr').length } 

# Array of all (possibly only 1) tables with the most rows 
biggest_n = tables[table.keys.max] 
+0

Спасибо Phrogz. Я получил это сейчас как однострочный 'most_table = doc.xpath ('// table'). Max_by {| table | table.xpath ('.// ​​tr'). length} ' –

+0

Вот один из 10k ... Поздравляем! –

+0

@ MladenJablanović Спасибо! – Phrogz

0

Возможно, это не то, что вы ищете, но вы можете сделать это легко в браузере, используя jQuery или Prototype.

0
tables = @doc.xpath('//table') 
tr_count = tables.map{|n| n.xpath('tr|*/tr').length} 
biggest_table = tables[tr_count.index(tr_count.max)] 
Смежные вопросы