Обработчик xml в Java.

Рейтинг: 1Ответов: 2Опубликовано: 10.06.2011

Посоветуйте, пожалуйста, какой лучше использовать обработчик xml в Java (желательно со ссылкой на источник).

Ответы

▲ 3Принят

О каком источнике может идти речь? В Java на борту предусмотрено два способа обработки XML: SAX и DOM.

SAX - потоковый парсер XML посмтроенный по паттерну visitor: вы даёте ему source stream и вашу реализацию handler'а, которую он будет вызывать по мере обнаружения тэгов, частей контента и т.д.

DOM - в этом случае вы можете с помощью DOM builder'а построить DOM-дерево из вашего XML-документа, а потом, с помощью DOM API работать с этим деревом.

Разница между ними понятна: с DOM работать в некоторых случаях гораздо проще, чем с SAX, но DOM-дерево всего документа может занимать много памяти.. может оказаться, что оно просто не поместится в памяти. В то время как SAX позволяет обработать документ не весь сразу, так что вы можете обработать документ любого размера. С другой стороны, временами SAX-обработка документа может тоже быть очень удобной, так что не следует думать, что надо всегда выбирать DOM, если документ маленький.

▲ 2

Кроме DOM и SAX рекомендую рассмотреть возможность использования StAX. Это также потоковый событийный API, но работает несколько по другому принципу (например можно самому запрашивать следующий элемент, или можно одновременно писать в другой XML-документ).

В некоторых случаях StAX работает быстрее имплементаций DOM и SAX и требует меньше памяти.

StAX предоставляет два API, выбирать из которых можно в соответствии с задачей.

Введение в StAX на русском языке - Использование StAX для обработки XML: Введение в потоковый API (Streaming API) для XML (StAX)

Сравнение разных подходов парсинга XML на английском языке -Why StAX?