我有一个具有任意行数的表 在这些行中,我的名称位于行中的列中,我想将其拉入并放入数组中 我想要从中获取的表格如下所示:
<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>
我想要提取的每一行的信息是name =“”。
如何从中拉出名称并创建一个数组?
答案 0 :(得分:2)
假设您的表只是一个字符串,您可以使用,例如REXML(似乎是手动安装)将其解析为XML文档,并提取名称属性,如下所示:
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(可以作为gem安装):
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']
你可以变得更加漂亮并按空格分割名字/姓氏,但这会对名字中包含空格的人造成严重破坏......