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

ご覧のとおり、 に置き換えるのではなく、jの兄弟の最後にnew_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 に答える