2012-06-25 2 views
3

J'utilise Ruby's Hpricot gem pour analyser html. Je souhaite supprimer un seul noeud du document pour l'utiliser ailleurs, mais je ne trouve pas de solution.Hpricot supprimer un seul élément

Je vois que je peux supprimer une liste complète des éléments, en utilisant une instance des éléments de hpricot (x = (doc/"div").remove), mais je veux seulement enlever la première instance d'un tag donné.

Fouillant autour, je vois la suggestion que je remplace simplement le texte interne de l'élément par un nœud de commentaire ou un espace (x.inner_html = ''), mais cela m'empêche d'utiliser le nœud ailleurs.

Que puis-je faire?

Spécifications: Ruby 1.8.7, 0.8.4 hpricot

+0

Par curiosité, faut-il utiliser Hpricot? Les réponses impliquant [Nokogiri] (http://nokogiri.org) seraient probablement plus faciles à trouver (vous ajoutez simplement le nœud ailleurs dans le document et il est retiré de son emplacement précédent) et seraient probablement plus robustes et plus efficaces. – Phrogz

+0

J'ai commencé à utiliser Nokogiri, mais je travaille sur le code existant de quelqu'un avec les balises '') # => Bonjour ' – Phrogz

Répondre

2

Essayez ceci!

x = (doc/"div").first 
x.parent.children.delete(x) unless x.nil?