Hpricot循环索引?

时间:2009-10-30 02:57:55

标签: html ruby-on-rails parsing hpricot

我有以下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>"

我的问题来自变量span的内容:如何在prepend循环中使用索引?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用each_child迭代每个li元素,并使用块来增加每次迭代的索引。