2

所以我使用 nokogiri 解析了一个 html 页面。

我想包装每次出现的链接周围的标签

.wrap()似乎无法正常工作。

puts doc.xpath("//a").wrap("<b></b>");

仅返回普通的常规未更改的 html。

4

1 回答 1

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

如您所见,它不是替换jnew_parent,而是添加 new_parentj兄弟姐妹的末尾。你可以像这样做你想做的事:

doc.search('//a').each do |j|
  new_parent = Nokogiri::XML::Node.new('b',doc)
  j.replace  new_parent
  new_parent << j
end
于 2009-10-19T13:59:07.960 回答