2009-10-30 8 views
1

J'ai la doc HTML suivant:Hercule en boucle avec indice?

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

Comment puis-je utiliser hpricot en boucle sur les éléments de liste et insérez un nouveau HTML au début de chacun, de sorte que je reçois le texte suivant:

<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> 

Si le nouveau contenu de durée ont été fixés, je pourrais utiliser:

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

Mon problème vient du contenu de la durée variable: comment puis-je utiliser un index dans le précédez l oop?

Répondre

2

Essayez ce code:

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 
0

Utilisez each_child pour parcourir chacun des éléments li et utiliser un bloc pour incrémenter l'index pour chaque itération.