Nokogiri:在FireFox <table> </table>之后添加元素

时间:2010-04-21 02:54:20

标签: firefox nokogiri

我有一个问题:

Firefox在<tbody>之后添加<table>是否存在。我对此没有任何问题。 Nokogiri没有添加它。

我需要Nokogiri模仿Firefox的行为。

如何将<table>元素之后的tbody添加到给定的HTML页面?如果tbody已经存在,那么请转到下一个<table> ....直到所有<tbody>标记由Nokogiri放置。

谢谢。

1 个答案:

答案 0 :(得分:1)

这对我有用:

require 'nokogiri'

src = <<EOS
<html>
    <body>
        <table>
            <tr>
                <td>Cell 1</td>
                <td>Cell 2</td>
            </tr>
            <tr>
                <td>Cell 1</td>
                <td>Cell 2</td>
            </tr>
        </table>
    </body>
</html>
EOS

doc = Nokogiri::HTML(src)

doc.xpath('//table').each do |table|
    tbody = Nokogiri::XML::Node.new('tbody', doc)
    tbody << table.children{|n| n.parent = tbody}
    table << tbody
end

puts doc