在使用Nokogiri解析表格行时,如何计算colspan?

时间:2017-09-28 21:28:58

标签: arrays html-table ruby-on-rails-5 nokogiri

我正在使用带有Rails的Nokogiri 5.给出HTML表格中的一行,例如

<tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
</tr>

我目前使用此代码将表格单元格数据提取为数组...

row_values = row.css('td, th').map{|str| str.text }
                                          .map{|str| str.gsub(/[[:space:]]+/, ' ').gsub(/\A\p{Space}+|\p{Space}+\z/, '') }.join("\t")

其中“row”是我的表格行。问题是,我如何调整上面的内容,以便如果表格单元格包含一个colspan属性,我会为colspan占用的每一行添加额外的空白元素到我的数组中?例如,如果我的行是

<tr>
    <td>1</td>
    <td colspan="2">2</td>
    <td>3</td>
</tr>

我的阵列将是

["1", "2", "", "3"]

注意我在那里有一个额外的“”,因为第二个表格单元格的“colspan”等于2.如果它是“3”,我的数组中会有两个额外的“”,依此类推。 / p>

1 个答案:

答案 0 :(得分:0)

一种方法是添加空单元格:

doc.search('[colspan]').each{|td| td.after '<td></td>' * (td['colspan'].to_i - 1)}

现在你可以像以前那样做了