J'ai un fichier XML complexe, et je veux en extraire le contenu d'un tag spécifique. J'utilise un script ruby avec XmlSimple gem. Je récupère un fichier XML avec une requête HTTP, puis je supprime toutes les balises inutiles et j'en retire les informations nécessaires. C'est le script lui-même:Manipuler des fichiers XML dans ruby avec XmlSimple
data = XmlSimple.xml_in(response.body)
hash_1 = Hash[*data['results']]
def find_value(hash, value)
hash.each do |key, val|
if val[0].kind_of? Hash then
find_value(val[0], value)
else
if key.to_s.eql? value
puts val
end
end
end
end
hash_1['book'].each do |arg|
find_value(arg, "title")
puts("\n")
end
Le problème est que lorsque je change remplacer puts val
avec return val
, puis appelez find_value méthode avec puts find_value (arg, "title")
, je reçois tout le contenu de hash_1 [livre] sur l'écran.
Comment corriger la méthode find_value?
Oui, il semble que je viens d'utiliser une mauvaise gemme pour cette tâche. Merci) –