Russian Qt Forum

Qt => XML => Тема начата: lyalya от Февраль 02, 2010, 13:14



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


Название: Re: разбор xml-документа
Отправлено: BRE от Февраль 02, 2010, 13:19
Забрал файл, разобрал, собрал в базу данных.
Пользователи работают с БД.


Название: Re: разбор xml-документа
Отправлено: lyalya от Февраль 02, 2010, 13:26
но данных не настолько много,чтоб запихивать это все в БД.. тем более вполне вероятна ситуация,что человек запустил программу всего 1 раз в день, так вообще вечностью покажется составление нужного ему списка: время скачивания с сервера + разбор xml + запихивание в БД + выбор и подстановка в поля товаров,которые понадобятся пользователю... второй раз он это уже не запустит :(


Название: Re: разбор xml-документа
Отправлено: crossly от Февраль 02, 2010, 13:50
2мб ему вечностью не покажутся... а пихать в бд мона любое количество данных.... в любом случае исходя из вашего вопроса вам нужно хранить разобранные данные..... как хранить это уже вам выбирать....


Название: Re: разбор xml-документа
Отправлено: BRE от Февраль 02, 2010, 14:00
но данных не настолько много,чтоб запихивать это все в БД.. тем более вполне вероятна ситуация,что человек запустил программу всего 1 раз в день, так вообще вечностью покажется составление нужного ему списка: время скачивания с сервера + разбор xml + запихивание в БД + выбор и подстановка в поля товаров,которые понадобятся пользователю... второй раз он это уже не запустит :(
???
Один раз в день, утром загружается xml, из него формируется новая база, один раз, утром.
В дальнейшем все клиенты весь день работают быстро с базой данных.


Название: Re: разбор xml-документа
Отправлено: lyalya от Февраль 02, 2010, 14:21
Цитировать
???
Один раз в день, утром загружается xml, из него формируется новая база, один раз, утром.
В дальнейшем все клиенты весь день работают быстро с базой данных.


так это, скажем так, больше развлекательная программа, вряд ли кто будет с ней весь день "работать"... :) 
Под словами "загружается раз в день" имелось ввиду,что если пользователь запустит программу 2-й раз за сутки, то она уже не будет тянуть xml с сервера. Но не факт же,что он ее будет каждый день запускать. И тем более в зависимости от того, что пользователь выберет на предыдущих страницах - тянутся разные xml


Название: Re: разбор xml-документа
Отправлено: lyalya от Февраль 02, 2010, 14:23
2мб ему вечностью не покажутся... а пихать в бд мона любое количество данных.... в любом случае исходя из вашего вопроса вам нужно хранить разобранные данные..... как хранить это уже вам выбирать....

а какие могут быть варианты помимо БД.. сейчас дерево строится..может поэтому медленным кажется?


Название: Re: разбор xml-документа
Отправлено: crossly от Февраль 02, 2010, 14:56
ну можно хранить в том же xml с нужной тебе структурой... можно просто в файле.... а 2м можно и в DOM запихнуть...


Название: Re: разбор xml-документа
Отправлено: lyalya от Февраль 02, 2010, 15:02
ну можно хранить в том же xml с нужной тебе структурой... можно просто в файле.... а 2м можно и в DOM запихнуть...

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

может есть еще какие-нить средства? попалось на глаза qjson,но что-то такое чувство, судя по комментариям и малому количеству информации на этот счет, что это не очень хорошая идея..


Название: Re: разбор xml-документа
Отправлено: crossly от Февраль 02, 2010, 15:14
Цитировать
странно как-то парсить xml и записывать в файл...
мил человек.... странно иметь желание хранить данные и не писать их на диск....
Цитировать
А DOM будет быстрее XmlStreamReader?
думаю что если строить дерево то да....


Название: Re: разбор xml-документа
Отправлено: Alex Custov от Февраль 02, 2010, 16:03
мил человек.... странно иметь желание хранить данные и не писать их на диск....

можно хранить в sqlite в ":memory:"


Название: Re: разбор xml-документа
Отправлено: crossly от Февраль 02, 2010, 17:57
и что с ней будет после выхода из проги??


Название: Re: разбор xml-документа
Отправлено: Alex Custov от Февраль 02, 2010, 18:20
и что с ней будет после выхода из проги??

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

// Ваш К.О.

 ;D


Название: Re: разбор xml-документа
Отправлено: Akaiten от Февраль 03, 2010, 10:19
По-моему разбор файла порядка нескольких мегабайт или пары десятков мегабайт происходит быстро, дальше хуже...
Можно разбирать в фоне и попутно выдавать пользователю готовые данные, т.к. в каждый момент времени пользователь работает только с небольшим объёмом данных... Ну и плюс кэшировать всё это дело, как было сказано выше.


Название: Re: разбор xml-документа
Отправлено: SASA от Февраль 03, 2010, 11:29
Время загрузки файла в дом может быть критично. Если структура документа сложна, файл несколко мегабайт, то время его парсинга будет заметно пользователю (~10 Мб - 15 сек). Сам столкнулся с такой проблемой. Тормозит фунция QDomDocument::setContent().
P.S. Может кто знает как ускорить. Но нужен именно дом.


Название: Re: разбор xml-документа
Отправлено: lyalya от Февраль 03, 2010, 13:30
было решено в файлики запихивать..значительно быстрее дело пошло! спасибо))