Страница 1 из 2
JAVA and XML parsing
Добавлено: 30 июл 2010, 06:08
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>
Re: JAVA and XML parsing
Добавлено: 30 июл 2010, 06:41
Stanislav
А вы сами что ли парсить собираетесь?

Почему бы не взять стандартный парсер...
http://xerces.apache.org
Re: JAVA and XML parsing
Добавлено: 30 июл 2010, 06:59
dima
Stanislav писал(а):А вы сами что ли парсить собираетесь?

Почему бы не взять стандартный парсер...
http://xerces.apache.org
сам парсить не буду. Я нашел несколько вариантов и не знаю какой выбрать.
Кто из них самый быстрый ?
Re: JAVA and XML parsing
Добавлено: 30 июл 2010, 07:19
Stanislav
dima писал(а):Stanislav писал(а):А вы сами что ли парсить собираетесь?

Почему бы не взять стандартный парсер...
http://xerces.apache.org
сам парсить не буду. Я нашел несколько вариантов и не знаю какой выбрать.
Кто из них самый быстрый ?
Давайте подождем Джава-грандов - у меня не было таких файлов, чтобы перформанс XML парсинга был критичен...
Re: JAVA and XML parsing
Добавлено: 30 июл 2010, 07:30
Правильные пацаны
dima писал(а):Stanislav писал(а):А вы сами что ли парсить собираетесь?

Почему бы не взять стандартный парсер...
http://xerces.apache.org
сам парсить не буду. Я нашел несколько вариантов и не знаю какой выбрать.
Кто из них самый быстрый ?
вариантов 2 - SAX и DOM.
один - евент ориентед - надо запоминать значения во время парсинга,
сложней в имплементации, меньше жрет памяти и быстрей должно быть.
Второй - дом - парсит, загружает усе в память и потом можно там бродить.
Легче имплементировать, но если много больших будет грузить память
Re: JAVA and XML parsing
Добавлено: 30 июл 2010, 08:10
Marmot
Правильные пацаны писал(а):dima писал(а):Stanislav писал(а):А вы сами что ли парсить собираетесь?

Почему бы не взять стандартный парсер...
http://xerces.apache.org
сам парсить не буду. Я нашел несколько вариантов и не знаю какой выбрать.
Кто из них самый быстрый ?
вариантов 2 - SAX и DOM.
Вариантов на самом деле побольше будет, на мой взгляд StAX это самый оптимал...
http://www.devx.com/Java/Article/30298
http://download.oracle.com/docs/cd/E178 ... JSXP2.html
Re: JAVA and XML parsing
Добавлено: 30 июл 2010, 10:40
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!
Re: JAVA and XML parsing
Добавлено: 30 июл 2010, 10:55
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 значительно удобнее, при той же скорости...
Re: JAVA and XML parsing
Добавлено: 30 июл 2010, 11:18
alpax
Marmot писал(а):для такого может и SAX сойдет, а вот если дерево ветвистое, то StAX значительно удобнее, при той же скорости...
Верю.
Но для линейного SAX хватит, и overhead будет минимальный. Впрочем, я не в курсе, что именно добавляет StAX (судя по названию, принцип у него должен быть похож на SAX), возможно и с ним будет не хуже по скорости, так что если сильно удобнее - можно и его, я потому и упомянул "вариации".
Re: JAVA and XML parsing
Добавлено: 31 июл 2010, 00:30
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 в объекты. Проблема скорее всего станет в использовании памяти.. Если есть доступ к исходным кодам надо посмотреть чтобы не сильно дурили с рекурсией... Насколько быстро надо?
Re: JAVA and XML parsing
Добавлено: 31 июл 2010, 00:52
alpax
buba писал(а):Проще проэкспериментировать с разными классами "разбирающими" XML в объекты. Проблема скорее всего станет в использовании памяти..
Такой линейный XML "разбирать на объекты" не надо - он скорее всего считывается в массив или просто на ходу обрабатывается, поэтому тут ничего похожего на DOM не нужно. SAX или подобный потоковый парсер - быстрее и требует на порядки меньше памяти.
Re: JAVA and XML parsing
Добавлено: 01 авг 2010, 12:24
buba
alpax писал(а):buba писал(а):Проще проэкспериментировать с разными классами "разбирающими" XML в объекты. Проблема скорее всего станет в использовании памяти..
Такой линейный XML "разбирать на объекты" не надо - он скорее всего считывается в массив или просто на ходу обрабатывается, поэтому тут ничего похожего на DOM не нужно. SAX или подобный потоковый парсер - быстрее и требует на порядки меньше памяти.
Ммм.. при любых раскладах это cpu bound task. По-сути алгоритм парсирования должен быть одинаков для всех парсеров а посему почти любой делает то же самое... И еще, если не исполнять XML по специфицакиции то, любое partial parsing не будет XML parser per se - парсирование объектов is a an essence of XML
Re: JAVA and XML parsing
Добавлено: 01 авг 2010, 15:15
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 по специфицакиции" чего стоит, даже если проигнорировать "специфицакицию" ...
Re: JAVA and XML parsing
Добавлено: 01 авг 2010, 16:22
CdR
buba писал(а):... И еще, если не исполнять XML по специфицакиции то, любое partial parsing не будет XML parser per se - парсирование объектов is a an essence of XML
Это только у меня сложилось вчепятление, что в этом теоритизировании предмет обсуждения уже остался за кадром?
Re: JAVA and XML parsing
Добавлено: 01 авг 2010, 16:36
Marmot
CdR писал(а):buba писал(а):... И еще, если не исполнять XML по специфицакиции то, любое partial parsing не будет XML parser per se - парсирование объектов is a an essence of XML
Это только у меня сложилось вчепятление, что в этом теоритизировании предмет обсуждения уже остался за кадром?
Кстати, фраза "парсирование объектов is a an essence of XML" это ваще улет, она показывает полное непонимание, как XML вообще, так и данного конкретного топика, произнесшим ее оратором...