JAVA and XML parsing

Все, что вы хотели знать о программизме, но боялись спросить.
Аватара пользователя
dima
Житель
Сообщения: 690
Зарегистрирован: 19 фев 2003, 19:26
Откуда: Хабаровск->Toronto

JAVA and XML parsing

Сообщение dima »

I have to parse XML data coming as string and create instances of Users (I have class ready for that).
I found different examples how to parse XML, but I need advice.

what the fastest (from performance point of view) way to parse XML in my case

<Users>
<User><Name>U1</Name><Id>1</Id></User>
<User><Name>U2</Name><Id>2</Id></User>
<User><Name>U3</Name><Id>3</Id></User>
.....
</Users>
Аватара пользователя
Stanislav
Mr. Minority Report
Сообщения: 45335
Зарегистрирован: 19 окт 2005, 16:33
Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo

Re: JAVA and XML parsing

Сообщение Stanislav »

А вы сами что ли парсить собираетесь? :what!?:
Почему бы не взять стандартный парсер...
http://xerces.apache.org
Аватара пользователя
dima
Житель
Сообщения: 690
Зарегистрирован: 19 фев 2003, 19:26
Откуда: Хабаровск->Toronto

Re: JAVA and XML parsing

Сообщение dima »

Stanislav писал(а):А вы сами что ли парсить собираетесь? :what!?:
Почему бы не взять стандартный парсер...
http://xerces.apache.org
сам парсить не буду. Я нашел несколько вариантов и не знаю какой выбрать.
Кто из них самый быстрый ?
Аватара пользователя
Stanislav
Mr. Minority Report
Сообщения: 45335
Зарегистрирован: 19 окт 2005, 16:33
Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo

Re: JAVA and XML parsing

Сообщение Stanislav »

dima писал(а):
Stanislav писал(а):А вы сами что ли парсить собираетесь? :what!?:
Почему бы не взять стандартный парсер...
http://xerces.apache.org
сам парсить не буду. Я нашел несколько вариантов и не знаю какой выбрать.
Кто из них самый быстрый ?
Давайте подождем Джава-грандов - у меня не было таких файлов, чтобы перформанс XML парсинга был критичен...
Аватара пользователя
Правильные пацаны
Маньяк
Сообщения: 1776
Зарегистрирован: 29 апр 2009, 20:14

Re: JAVA and XML parsing

Сообщение Правильные пацаны »

dima писал(а):
Stanislav писал(а):А вы сами что ли парсить собираетесь? :what!?:
Почему бы не взять стандартный парсер...
http://xerces.apache.org
сам парсить не буду. Я нашел несколько вариантов и не знаю какой выбрать.
Кто из них самый быстрый ?
вариантов 2 - SAX и DOM.
один - евент ориентед - надо запоминать значения во время парсинга,
сложней в имплементации, меньше жрет памяти и быстрей должно быть.
Второй - дом - парсит, загружает усе в память и потом можно там бродить.
Легче имплементировать, но если много больших будет грузить память
Аватара пользователя
Marmot
Графоман
Сообщения: 39293
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: JAVA and XML parsing

Сообщение Marmot »

Правильные пацаны писал(а):
dima писал(а):
Stanislav писал(а):А вы сами что ли парсить собираетесь? :what!?:
Почему бы не взять стандартный парсер...
http://xerces.apache.org
сам парсить не буду. Я нашел несколько вариантов и не знаю какой выбрать.
Кто из них самый быстрый ?
вариантов 2 - SAX и DOM.
Вариантов на самом деле побольше будет, на мой взгляд StAX это самый оптимал...
http://www.devx.com/Java/Article/30298
http://download.oracle.com/docs/cd/E178 ... JSXP2.html
Аватара пользователя
alpax
Графоман
Сообщения: 10575
Зарегистрирован: 04 мар 2003, 17:39
Откуда: Richmond, BC

Re: JAVA and XML parsing

Сообщение alpax »

dima писал(а):what the fastest (from performance point of view) way to parse XML in my case

<Users>
<User><Name>U1</Name><Id>1</Id></User>
<User><Name>U2</Name><Id>2</Id></User>
<User><Name>U3</Name><Id>3</Id></User>
.....
</Users>
Для такого XML - однозначно SAX или его вариации, точно не DOM!
Аватара пользователя
Marmot
Графоман
Сообщения: 39293
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: JAVA and XML parsing

Сообщение Marmot »

alpax писал(а):
dima писал(а):what the fastest (from performance point of view) way to parse XML in my case

<Users>
<User><Name>U1</Name><Id>1</Id></User>
<User><Name>U2</Name><Id>2</Id></User>
<User><Name>U3</Name><Id>3</Id></User>
.....
</Users>
Для такого XML - однозначно SAX или его вариации, точно не DOM!
для такого может и SAX сойдет, а вот если дерево ветвистое, то StAX значительно удобнее, при той же скорости...
Аватара пользователя
alpax
Графоман
Сообщения: 10575
Зарегистрирован: 04 мар 2003, 17:39
Откуда: Richmond, BC

Re: JAVA and XML parsing

Сообщение alpax »

Marmot писал(а):для такого может и SAX сойдет, а вот если дерево ветвистое, то StAX значительно удобнее, при той же скорости...
Верю.
Но для линейного SAX хватит, и overhead будет минимальный. Впрочем, я не в курсе, что именно добавляет StAX (судя по названию, принцип у него должен быть похож на SAX), возможно и с ним будет не хуже по скорости, так что если сильно удобнее - можно и его, я потому и упомянул "вариации".
buba
Пользователь
Сообщения: 95
Зарегистрирован: 09 май 2010, 13:49

Re: JAVA and XML parsing

Сообщение buba »

dima писал(а):I have to parse XML data coming as string and create instances of Users (I have class ready for that).
I found different examples how to parse XML, but I need advice.

what the fastest (from performance point of view) way to parse XML in my case

<Users>
<User><Name>U1</Name><Id>1</Id></User>
<User><Name>U2</Name><Id>2</Id></User>
<User><Name>U3</Name><Id>3</Id></User>
.....
</Users>
Проще проэкспериментировать с разными классами "разбирающими" XML в объекты. Проблема скорее всего станет в использовании памяти.. Если есть доступ к исходным кодам надо посмотреть чтобы не сильно дурили с рекурсией... Насколько быстро надо?
Аватара пользователя
alpax
Графоман
Сообщения: 10575
Зарегистрирован: 04 мар 2003, 17:39
Откуда: Richmond, BC

Re: JAVA and XML parsing

Сообщение alpax »

buba писал(а):Проще проэкспериментировать с разными классами "разбирающими" XML в объекты. Проблема скорее всего станет в использовании памяти..
Такой линейный XML "разбирать на объекты" не надо - он скорее всего считывается в массив или просто на ходу обрабатывается, поэтому тут ничего похожего на DOM не нужно. SAX или подобный потоковый парсер - быстрее и требует на порядки меньше памяти.
buba
Пользователь
Сообщения: 95
Зарегистрирован: 09 май 2010, 13:49

Re: JAVA and XML parsing

Сообщение buba »

alpax писал(а):
buba писал(а):Проще проэкспериментировать с разными классами "разбирающими" XML в объекты. Проблема скорее всего станет в использовании памяти..
Такой линейный XML "разбирать на объекты" не надо - он скорее всего считывается в массив или просто на ходу обрабатывается, поэтому тут ничего похожего на DOM не нужно. SAX или подобный потоковый парсер - быстрее и требует на порядки меньше памяти.
Ммм.. при любых раскладах это cpu bound task. По-сути алгоритм парсирования должен быть одинаков для всех парсеров а посему почти любой делает то же самое... И еще, если не исполнять XML по специфицакиции то, любое partial parsing не будет XML parser per se - парсирование объектов is a an essence of XML
Аватара пользователя
Marmot
Графоман
Сообщения: 39293
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: JAVA and XML parsing

Сообщение Marmot »

buba писал(а):
alpax писал(а):
buba писал(а):Проще проэкспериментировать с разными классами "разбирающими" XML в объекты. Проблема скорее всего станет в использовании памяти..
Такой линейный XML "разбирать на объекты" не надо - он скорее всего считывается в массив или просто на ходу обрабатывается, поэтому тут ничего похожего на DOM не нужно. SAX или подобный потоковый парсер - быстрее и требует на порядки меньше памяти.
Ммм.. при любых раскладах это cpu bound task. По-сути алгоритм парсирования должен быть одинаков для всех парсеров а посему почти любой делает то же самое... И еще, если не исполнять XML по специфицакиции то, любое partial parsing не будет XML parser per se - парсирование объектов is a an essence of XML
Гы-ы, сразу видно "абстрактного теоретика", незнающего чем DOM от SAX -а отличается... одна глубокомысленная фраза " если не исполнять XML по специфицакиции" чего стоит, даже если проигнорировать "специфицакицию" ...
Аватара пользователя
CdR
Графоман
Сообщения: 11245
Зарегистрирован: 11 окт 2004, 19:27
Откуда: Европа, центр, за углом направо.

Re: JAVA and XML parsing

Сообщение CdR »

buba писал(а):... И еще, если не исполнять XML по специфицакиции то, любое partial parsing не будет XML parser per se - парсирование объектов is a an essence of XML
Это только у меня сложилось вчепятление, что в этом теоритизировании предмет обсуждения уже остался за кадром?
Аватара пользователя
Marmot
Графоман
Сообщения: 39293
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: JAVA and XML parsing

Сообщение Marmot »

CdR писал(а):
buba писал(а):... И еще, если не исполнять XML по специфицакиции то, любое partial parsing не будет XML parser per se - парсирование объектов is a an essence of XML
Это только у меня сложилось вчепятление, что в этом теоритизировании предмет обсуждения уже остался за кадром?
Кстати, фраза "парсирование объектов is a an essence of XML" это ваще улет, она показывает полное непонимание, как XML вообще, так и данного конкретного топика, произнесшим ее оратором...
Ответить