Управление XML-файлами в ruby ​​с помощью XmlSimple - PullRequest
0 голосов
/ 02 ноября 2010

У меня сложный файл 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?

1 Ответ

1 голос
/ 03 ноября 2010

«Сложный файл XML» и XmlSimple не смешиваются. Ваша задача была бы решена намного проще с Nokogiri, а также была бы быстрее:

require 'nokogiri'
doc = Nokogiri::XML(response.body)

puts doc.xpath('//book/title/text()')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...