2010-04-23 6 views

Répondre

2
require 'rubygems' 
require 'nokogiri' 

html = Nokogiri::HTML(DATA) 
html.xpath('//table/tbody').each do |tbody| 
    tbody.children.each do |child| 
    child.parent = tbody.parent 
    end 
    tbody.remove 
end 

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

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

impressions

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

+1 pour une réponse de travail. Voir ma réponse pour une manière plus simple d'atteindre le même objectif. – Phrogz

1

Vous voulez remplacer chaque tbody avec ses enfants? Ensuite, c'est tout ce que vous devez dire:

require 'nokogiri' 
html = Nokogiri::HTML.fragment(DATA.read) 
html.css('tbody').each{ |tbody| tbody.replace tbody.children } 
puts html 

__END__ 
<table><tbody> 
    <tr><td>Data</td></tr> 
    <tr><td>Data2</td></tr> 
</tbody><tbody> 
    <tr><td>Data3</td></tr> 
</tbody></table> 

Production:

<table> 
<tr><td>Data</td></tr> 
<tr><td>Data2</td></tr> 
<tr><td>Data3</td></tr> 
</table>