Обработчик xml в Java.
Посоветуйте, пожалуйста, какой лучше использовать обработчик xml
в Java
(желательно со ссылкой на источник).
Посоветуйте, пожалуйста, какой лучше использовать обработчик xml
в Java
(желательно со ссылкой на источник).
О каком источнике может идти речь? В Java на борту предусмотрено два способа обработки XML: SAX и DOM.
SAX - потоковый парсер XML посмтроенный по паттерну visitor: вы даёте ему source stream и вашу реализацию handler'а, которую он будет вызывать по мере обнаружения тэгов, частей контента и т.д.
DOM - в этом случае вы можете с помощью DOM builder'а построить DOM-дерево из вашего XML-документа, а потом, с помощью DOM API работать с этим деревом.
Разница между ними понятна: с DOM работать в некоторых случаях гораздо проще, чем с SAX, но DOM-дерево всего документа может занимать много памяти.. может оказаться, что оно просто не поместится в памяти. В то время как SAX позволяет обработать документ не весь сразу, так что вы можете обработать документ любого размера. С другой стороны, временами SAX-обработка документа может тоже быть очень удобной, так что не следует думать, что надо всегда выбирать DOM, если документ маленький.
Кроме DOM и SAX рекомендую рассмотреть возможность использования StAX. Это также потоковый событийный API, но работает несколько по другому принципу (например можно самому запрашивать следующий элемент, или можно одновременно писать в другой XML-документ).
В некоторых случаях StAX работает быстрее имплементаций DOM и SAX и требует меньше памяти.
StAX предоставляет два API, выбирать из которых можно в соответствии с задачей.
Введение в StAX на русском языке - Использование StAX для обработки XML: Введение в потоковый API (Streaming API) для XML (StAX)
Сравнение разных подходов парсинга XML на английском языке -Why StAX?