Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML файл обработать и записать в базу 
:(
    Опции темы
zsftp
Дата 23.3.2010, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 5.4.2008

Репутация: нет
Всего: нет



Имеется 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 минут. Как можно ускорить процесс?
PM MAIL   Вверх
source777
Дата 23.3.2010, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



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

Известный способ ускорить работу с XML в несколько десятков раз - это отказаться от REXML и пользоваться чем-нибудь на основе библиотеки libxml, например Nokogiri или Libxml-Ruby

Это сообщение отредактировал(а) source777 - 23.3.2010, 22:40


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0563 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.