У меня сложный файл XML, и я хочу извлечь из него содержимое определенного тега.
Я использую скрипт ruby с гемом XmlSimple. Я извлекаю XML-файл с HTTP-запросом, затем удаляю все ненужные теги и извлекаю необходимую информацию. Это сам скрипт:
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
Проблема в том, что когда я заменяю puts val
на return val
, а затем вызываю метод find_value на puts find_value (arg, "title")
, я получаю все содержимое hash_1 [book] на экране.
Как исправить метод find_value?