Разбор большого XML с помощью Nokogiri
Так что я'Я пытаюсь разобрать файл XML с 400k + строкой, используя Nokogiri.
Файл XML имеет следующий базовый формат:
*** Repeated Many Times ***
166024
Multiple epiphyseal dysplasia, Al-Gazali type
Macrocephaly/macrocrania/megalocephaly/megacephaly
Very frequent
*** Repeated Many Times ***
Вот код, который ямы создали для анализа и возврата каждого идентификатора и имени DisorderSign в базу данных:
require 'nokogiri'
sympFile = File.open("Temp.xml")
@doc = Nokogiri::XML(sympFile)
sympFile.close()
symptomsList = []
@doc.xpath("////DisorderSign").each do |x|
signId = x.at('ClinicalSign').attribute('id').text()
name = x.at('ClinicalSign').element_children().text()
symptomsList.push([signId, name])
end
symptomsList.each do |x|
Symptom.where(:name => x[1], :signid => Integer(x[0])).first_or_create
end
Это отлично работает на тестовых файлах, которые яМы использовали, хотя они были намного меньше, около 10000 строк.
Когда я пытаюсь запустить это на большом XML-файле, он просто не заканчивается. Я оставил его на ночь, и казалось, что он просто заперт. Есть ли фундаментальная причина, по которой код I 'Вы написали бы сделать это очень интенсивной памяти или неэффективно? Я понимаю, что храню каждую возможную пару в списке, но это не должнобыть достаточно большим, чтобы заполнить память.
Спасибо за любую помощь.