2011-06-09 40 views
0

我有一個表中有任意數量的行。
在這些行中,我有行中的列中的名稱,我想要將它們放入數組中。
,我想從外觀拉像這樣的表:如何從Table中的行保存信息創建數組?

<table id="team-1200d35e-7528-11e0-9a7d-00b7c9f2a9c6-table" class="grid" style="width: 748px;"> 
    <tbody> 
    <tr class="team-member odd" row="1" team="0" data-id="66c36a98-7832-11e0-968b-5e9370556780" name="Barbara Gordon"> 
    </tr> 
    <tr class="team-member even" row="5" team="0" data-id="a9042cb6-7527-11e0-9a7d-00b7c9f2a9c6" name="Bruce Wayne"> 
    </tr> 
    <tr class="team-member even" row="0" team="0" data-id="39daacee-7832-11e0-968b-5e9370556780" name="Dick Grayson"> 
    </tr> 
    </tr> 
    </tbody> 
    </table> 

從我要拉每一行的信息是名字=「」。

我該如何拉出名字並創建一個數組?

+0

在Ruby中,您不能擁有無限數量行的數組。你可能意味着任意數量的行。 – sawa 2011-06-10 01:28:26

+0

@sawa:謝謝。肯定在那裏使用了錯誤的詞哈哈。 – 2011-06-10 02:06:11

回答

2

假設你的表只是一個字符串,你可以使用解析它作爲一個XML文檔,說REXML(這似乎是一個手動安裝),並提取name屬性,像這樣:

require 'rexml' 
names = [] 
doc = REXML::Document.new(my_table_data) 
doc.elements.each('table/tbody/tr') do |el| 
    names << el.attributes['name'] if el.attributes['name'] 
end 
names # => ['Barbara Gordon', 'Bruce Wayne', 'Dick Grayson'] 

或類似的使用Nokogiri(可安裝爲寶石):

require 'nokogiri' 
names = [] 
doc = Nokogiri::XML.fragment(my_table_data) 
doc.xpath('table/tbody/tr[@name]').each do |el| 
    names << el['name'] 
end 
names # => ['Barbara Gordon', 'Bruce Wayne', 'Dick Grayson'] 

你可以讓發燒友和由空格分割第一/姓氏,但將肆虐的人,他們的名字包括空格...

+0

您能否指點我可以瞭解更多關於REXML的方向?我以前從未使用過這個。這是寶石嗎? – 2011-06-09 21:06:54

+1

@Curtis米勒:我已經從我的文章鏈接的[REXML網站(http://www.germane-software.com/software/rexml/)。它看起來像[引入nokogiri(http://nokogiri.org/)更容易安裝(也可能使用),因此,您可能希望走這條路吧。 – maerics 2011-06-09 21:23:29

+0

我開一張票,我的問題,引入nokogiri這裏 - http://stackoverflow.com/questions/6300078/what-i-am-doing-wrong-or-what-i-am-missing-to-install-nokogiri但我仍然有問題試圖讓這些工作。 – 2011-06-10 17:43:42