1

私は次のHTMLドキュメントを持っています:

<ul>
  <li><span>Some text</span></li>
  <li><span>Some other text</span></li>
  <li><span>Some more text</span></li>
</ul>

Hpricotを使用してリスト項目をループし、それぞれの先頭に新しいHTMLを挿入して、次のようにするにはどうすればよいですか。

<ul>
  <li><span>1</span><span>Some text</span></li>
  <li><span>2</span><span>Some other text</span></li>
  <li><span>3</span><span>Some more text</span></li>
</ul>

新しいスパンのコンテンツが修正された場合、私は次を使用できます:

 (doc/"li").prepend "<span>fixed</span>"

私の問題は変数スパンの内容に起因します:どうすればプリペンドループでインデックスを使用できますか?

4

2 に答える 2

2

このコードを試してください:

require 'rubygems'
require 'hpricot'

html = <<-EOF
<ul>
  <li><span>Some text</span></li>
  <li><span>Some other text</span></li>
  <li><span>Some more text</span></li>
</ul>
EOF

doc = Hpricot(html)
(doc/'li/span').each_with_index do |element,index|
  value = index + 1
  element.before "<span>#{value}</span>"
end

puts doc.to_s
于 2009-11-09T02:12:50.383 に答える
0

each_child を使用して各 li 要素を反復処理し、ブロックを使用して反復ごとにインデックスをインクリメントします。

于 2009-10-30T04:07:17.743 に答える