2009-10-19 30 views

回答

2

這是wrap工作方式中的缺陷。這裏是源:

# File lib/nokogiri/xml/node_set.rb, line 212 
    def wrap(html, &blk) 
    each do |j| 
     new_parent = Nokogiri.make(html, &blk) 
     j.parent.add_child(new_parent) 
     new_parent.add_child(j) 
    end 
    self 
    end 

正如你所看到的,而不是用new_parent更換j,它增加了new_parentj的兄弟姐妹的結束。你可以這樣做你想做的事:

doc.search('//a').each do |j| 
    new_parent = Nokogiri::XML::Node.new('b',doc) 
    j.replace new_parent 
    new_parent << j 
end 
+0

非常感謝你!這做到了! – fjfjwo 2009-10-19 19:10:42