Попытка навигации по XML-файлу с использованием nokogiri и xpath - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть XML-файл, который можно загрузить с: https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml

Я пытаюсь перемещаться по валютам, чтобы сохранять их в своей базе данных.

У меня есть:

open('app/assets/forex/eurofxref-daily.xml', 'wb') do |file|
      file << open('https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml').read
 end

then 

doc = File.open("app/assets/forex/eurofxref-daily.xml") { |f| Nokogiri::XML(f) }

Мне трудно получить доступ к интересующим меня узлам для извлечения валют и значений.

1 Ответ

0 голосов
/ 02 декабря 2018

Я не знаком с Nokogiri, но из этого урока , похоже, вы можете применить следующий XPath: /*/e:Cubes/e:Cube/e:Cube, чтобы выбрать все элементы Cube.

Оттуда вы можете перебирать каждый из элементов Cube и выбирать их атрибуты @currency и @rate:

@doc = Nokogiri::XML(File.open("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"))
@doc.xpath('/*/e:Cubes/e:Cube/e:Cube', 'e' => 'ttp://www.ecb.int/vocabulary/2002-08-01/eurofxref').each do |node|
  # do stuff
  currency = node.attr('currency')
  rate = node.attr('rate')      
end
...