所以我使用 nokogiri 解析了一个 html 页面。
我想包装每次出现的链接周围的标签
.wrap()
似乎无法正常工作。
puts doc.xpath("//a").wrap("<b></b>");
仅返回普通的常规未更改的 html。
这是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