使用Nokogiri
的Ruby代码doc.xpath("//tbody").remove
删除<tbody>
的子项(以及<tbody>
本身)。我只想从文档中删除所有<tbody>
标记,将其子项留在原位。我怎样才能做到这一点?
答案 0 :(得分: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>
打印
<table border="0" cellspacing="5" cellpadding="5">
<tr><td>Data</td></tr>
<tr><td>Data2</td></tr>
<tr><td>Data3</td></tr>
</table>
答案 1 :(得分:1)
您想要将每个tbody
替换为其子级吗?那就是你需要说的全部:
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>
产:
<table>
<tr><td>Data</td></tr>
<tr><td>Data2</td></tr>
<tr><td>Data3</td></tr>
</table>