Nokogiri: добавьте <tbody>после <table>элементов, как это делает FireFox - PullRequest
1 голос
/ 21 апреля 2010

У меня проблема:

Firefox добавляет <tbody> там или нет, после <table>. У меня нет проблем с этим. Нокогири не добавляет его.

Мне нужен Нокогири, чтобы подражать поведению Firefox.

Как я могу добавить tbody после <table> элементов на заданную HTML-страницу? Если кто-то уже там, тогда переходите к следующему <table> ...., пока все теги <tbody> не будут размещены Nokogiri.

Спасибо.

1 Ответ

1 голос
/ 02 февраля 2011

Это работает для меня:

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
...