Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > XML файл обработать и записать в базу


Автор: zsftp 23.3.2010, 14:05
Имеется XML файл весом около 50Мб.
Примерно такого вида:

<prcdgt76>
<partno>0199906004</partno>
<descrn>MANUAL, OWNERS</descrn>
<rate>7.6</rate>
<lenght>0</lenght>
<width>0</width>
<height>0</height>
<volume>0</volume>
</prcdgt76>

Необходимо его обработать, причем значения полей rate, lenght, width, height и volume подставляются в формулу и получаем на выходе число.
Т.е. нужны поля partno, descrn и result из формулы.

Пробую сделать это через rexml (примерно):

Код

#!/usr/bin/env ruby

require 'rexml/document'

file = 'temp/x.xml'

xml = File.open(file, 'r')

partno = []

doc = REXML::Document.new(xml)
doc.elements.each('dataroot/prcdgt76/partno') do |ele|
   partno << ele.text
end

partno.each_with_index do |partno|
   print "#{partno}\n"
end



Файл в итоге обрабатывается в районе 10 минут. Как можно ускорить процесс?

Автор: source777 23.3.2010, 22:39
Цитата(zsftp @  23.3.2010,  14:05 Найти цитируемый пост)
Файл в итоге обрабатывается в районе 10 минут. Как можно ускорить процесс? 

Известный способ ускорить работу с XML в несколько десятков раз - это отказаться от REXML и пользоваться чем-нибудь на основе библиотеки libxml, например http://nokogiri.org/ или http://libxml.rubyforge.org/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)