Hpricot与索引循环?
问题描述:
我有以下的HTML文档:Hpricot与索引循环?
<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>"
我的问题来自于变量跨度的内容:我怎么能在前置l使用索引空中接力?
答
试试这个代码:
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
答
使用each_child迭代每个li元素,并使用块为每次迭代递增索引。