2010-04-21 56 views
1

我有一个问题:引入nokogiri:添加<tbody>后<table>元素作为Firefox没有

火狐增加了<tbody>是否它的存在与否,<table>后。我对此没有任何问题。 Nokogiri不添加它。

我需要Nokogiri来模拟Firefox的行为。

如何将<table>元素后的tbody添加到给定的HTML页面?如果tbody已经在那里,然后继续前进到<table> ....直到所有<tbody>标签由Nokogiri放置。

谢谢。

+0

重复的问题?这似乎已在这里得到解答:http://stackoverflow.com/questions/2680479/nokogiri-how-to-insert-tbody-tag-immediately-after-table-tag – atomicules 2010-05-26 14:12:50

回答

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 
相关问题