1

次の例のように、タグの外側にある要素を含む、不正な形式の可能性のあるHTML入力を受け入れるSanitizeトランスフォーマーを構築しようとしています。

out of a tag<p>in a tag</p>out again!

<p>上記が次のように変換されるように、トランスフォーマーにタグ付けされていない要素をタグでラップさせたいと思います。

<p>out of a tag</p><p>in a tag</p><p>out again!</p>

残念ながら、タグなしの要素はノードではないため、選択する方法がわかりません。私はここで何かが欠けていると確信しています。誰かが私に正しい方向にナッジを与えることができますか?

4

1 に答える 1

1
require 'nokogiri'

html = 'out of a tag<p>in a tag</p>out again!'

Nokogiri::HTML(html).at_css('body').children.
  map {|x| '<p>' + x.text + '</p>' }.join('')
#=> "<p>out of a tag</p><p>in a tag</p><p>out again!</p>"

テキストはテキストノードに保存されます。CSSはテキストノードを選択できないため、他のメソッドを使用してのように取得する必要がありますNokogiri::XML::Node#children

于 2010-07-02T17:51:32.903 に答える