nokogiri: обернуть <tbody>вокруг <table>ребенка - PullRequest
1 голос
/ 23 апреля 2010

как я могу это сделать? Мне нужно поместить tbody после тегов таблицы, в основном, чтобы эмулировать поведение Firefox.

я сделал это:

nodes = @doc.css "table > *"
wrapper = nodes.wrap("<tbody></tbody>")

Спасибо.

1 Ответ

1 голос
/ 24 апреля 2010

<tbody> следует использовать только для переноса тела таблицы, поэтому при условии, что у вас нет верхнего или нижнего колонтитула, это будет работать:

require 'rubygems'
require 'nokogiri'

html = Nokogiri::HTML(DATA)
html.xpath('//table').each do |htable|
  tbody = html.create_element('tbody')
  tbody.children = htable.children
  htable.children = tbody
end

puts html.xpath('//table').to_s

__END__
<table border="0" cellspacing="5" cellpadding="5">
    <tr><td>Data</td></tr>
    <tr><td>Data2</td></tr>
    <tr><td>Data3</td></tr>
</table>

печать

<table border="0" cellspacing="5" cellpadding="5"><tbody>
<tr><td>Data</td></tr>
<tr><td>Data2</td></tr>
<tr><td>Data3</td></tr>
</tbody></table>
...