Russian Qt Forum
Сентябрь 21, 2024, 14:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: разбор xml-документа  (Прочитано 10319 раз)
lyalya
Гость
« : Февраль 02, 2010, 13:14 »

посоветуйте, пожалуйста...
в общем надо как-нить с сервера забирать документ, в котором список товаров, их цен, характеристик и т.п. Реализация на данный момент: на сервере все запихивается в xml, а на стороне клиента посредством XmlStreamReader разбирается (файл скачивается с сервера всего один раз в сутки, но разбирается каждый раз при запуске программы)... на данный момент документ размером примерно 2 Мб, но ожидается,что его размер будет расти. Не устраивает то,что клиенту приходится ждать определенное время, пока файл разберется.. Есть какие-нить более быстрые аналоги?
Записан
BRE
Гость
« Ответ #1 : Февраль 02, 2010, 13:19 »

Забрал файл, разобрал, собрал в базу данных.
Пользователи работают с БД.
Записан
lyalya
Гость
« Ответ #2 : Февраль 02, 2010, 13:26 »

но данных не настолько много,чтоб запихивать это все в БД.. тем более вполне вероятна ситуация,что человек запустил программу всего 1 раз в день, так вообще вечностью покажется составление нужного ему списка: время скачивания с сервера + разбор xml + запихивание в БД + выбор и подстановка в поля товаров,которые понадобятся пользователю... второй раз он это уже не запустит Грустный
Записан
crossly
Гость
« Ответ #3 : Февраль 02, 2010, 13:50 »

2мб ему вечностью не покажутся... а пихать в бд мона любое количество данных.... в любом случае исходя из вашего вопроса вам нужно хранить разобранные данные..... как хранить это уже вам выбирать....
Записан
BRE
Гость
« Ответ #4 : Февраль 02, 2010, 14:00 »

но данных не настолько много,чтоб запихивать это все в БД.. тем более вполне вероятна ситуация,что человек запустил программу всего 1 раз в день, так вообще вечностью покажется составление нужного ему списка: время скачивания с сервера + разбор xml + запихивание в БД + выбор и подстановка в поля товаров,которые понадобятся пользователю... второй раз он это уже не запустит Грустный
Непонимающий
Один раз в день, утром загружается xml, из него формируется новая база, один раз, утром.
В дальнейшем все клиенты весь день работают быстро с базой данных.
Записан
lyalya
Гость
« Ответ #5 : Февраль 02, 2010, 14:21 »

Цитировать
Непонимающий
Один раз в день, утром загружается xml, из него формируется новая база, один раз, утром.
В дальнейшем все клиенты весь день работают быстро с базой данных.


так это, скажем так, больше развлекательная программа, вряд ли кто будет с ней весь день "работать"... Улыбающийся 
Под словами "загружается раз в день" имелось ввиду,что если пользователь запустит программу 2-й раз за сутки, то она уже не будет тянуть xml с сервера. Но не факт же,что он ее будет каждый день запускать. И тем более в зависимости от того, что пользователь выберет на предыдущих страницах - тянутся разные xml
Записан
lyalya
Гость
« Ответ #6 : Февраль 02, 2010, 14:23 »

2мб ему вечностью не покажутся... а пихать в бд мона любое количество данных.... в любом случае исходя из вашего вопроса вам нужно хранить разобранные данные..... как хранить это уже вам выбирать....

а какие могут быть варианты помимо БД.. сейчас дерево строится..может поэтому медленным кажется?
Записан
crossly
Гость
« Ответ #7 : Февраль 02, 2010, 14:56 »

ну можно хранить в том же xml с нужной тебе структурой... можно просто в файле.... а 2м можно и в DOM запихнуть...
Записан
lyalya
Гость
« Ответ #8 : Февраль 02, 2010, 15:02 »

ну можно хранить в том же xml с нужной тебе структурой... можно просто в файле.... а 2м можно и в DOM запихнуть...

странно как-то парсить xml и записывать в файл...нелогично что ли...потом просто еще файл парсить......
А DOM будет быстрее XmlStreamReader?

может есть еще какие-нить средства? попалось на глаза qjson,но что-то такое чувство, судя по комментариям и малому количеству информации на этот счет, что это не очень хорошая идея..
Записан
crossly
Гость
« Ответ #9 : Февраль 02, 2010, 15:14 »

Цитировать
странно как-то парсить xml и записывать в файл...
мил человек.... странно иметь желание хранить данные и не писать их на диск....
Цитировать
А DOM будет быстрее XmlStreamReader?
думаю что если строить дерево то да....
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #10 : Февраль 02, 2010, 16:03 »

мил человек.... странно иметь желание хранить данные и не писать их на диск....

можно хранить в sqlite в ":memory:"
Записан
crossly
Гость
« Ответ #11 : Февраль 02, 2010, 17:57 »

и что с ней будет после выхода из проги??
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #12 : Февраль 02, 2010, 18:20 »

и что с ней будет после выхода из проги??

Она удалится.

// Ваш К.О.

 Смеющийся
Записан
Akaiten
Гость
« Ответ #13 : Февраль 03, 2010, 10:19 »

По-моему разбор файла порядка нескольких мегабайт или пары десятков мегабайт происходит быстро, дальше хуже...
Можно разбирать в фоне и попутно выдавать пользователю готовые данные, т.к. в каждый момент времени пользователь работает только с небольшим объёмом данных... Ну и плюс кэшировать всё это дело, как было сказано выше.
Записан
SASA
Гость
« Ответ #14 : Февраль 03, 2010, 11:29 »

Время загрузки файла в дом может быть критично. Если структура документа сложна, файл несколко мегабайт, то время его парсинга будет заметно пользователю (~10 Мб - 15 сек). Сам столкнулся с такой проблемой. Тормозит фунция QDomDocument::setContent().
P.S. Может кто знает как ускорить. Но нужен именно дом.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 23.