Разбор большого 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 'Вы написали бы сделать это очень интенсивной памяти или неэффективно? Я понимаю, что храню каждую возможную пару в списке, но это не должнобыть достаточно большим, чтобы заполнить память.

Спасибо за любую помощь.

Ответы на вопрос(4)

Ваш ответ на вопрос