所以我使用nokogiri解析了一个html页面。
我想在每个链接出现时包装 标签
.wrap()
似乎无效。
puts doc.xpath("//a").wrap("<b></b>");
返回普通的常规未更改的html。
答案 0 :(得分: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
正如您所看到的,不是将j
替换为new_parent
,而是将new_parent
添加到j
的兄弟姐妹的末尾。你可以这样做你想做的事情:
doc.search('//a').each do |j|
new_parent = Nokogiri::XML::Node.new('b',doc)
j.replace new_parent
new_parent << j
end