Как указал Блейз, придерживайтесь стандартов. Но за этот период было создано несколько стандартов для решения различных проблем / вариантов использования. Какой из них выбрать полностью зависит от ваших требований. Я надеюсь, что приведенное ниже сравнение поможет вам выбрать правильный вариант.
Теперь есть две вещи , которые вы должны выбрать. API и реализации API (их много)
API
SAX: Плюсы
- на основе событий
- эффективная память
- быстрее чем DOM
- поддерживает проверку схемы
SAX: Минусы
- Нет объектной модели, вы должны подключиться к
события и создайте себя
- Один разбор xml и может только
идти вперед
- API только для чтения
- без поддержки xpath
- немного сложнее в использовании
ДОМ: Плюсы
- объектная модель в памяти
- сохраняет порядок элементов
- двунаправленная
- чтение и запись API
- xml МАНИПУЛЯЦИЯ
- простой в использовании
- поддерживает проверку схемы
ДОМ: Минусы
- увеличение памяти для больших XML-документов
(обычно используется для документов XML
меньше 10 мб)
- медленнее
- универсальная модель, т.е. вы работаете с узлами
Stax: Плюсы
- Лучшее из SAX и DOM, то есть простота DOM
и эффективность SAX
- эффективная память
- Модель Pull
- чтение и запись API
- поддерживает субразбор
- может читать несколько документов одновременно
в одну нить
- параллельная обработка XML проще
Stax: Минусы
- нет поддержки проверки схемы (насколько
насколько я помню, не уверен, что у них есть
добавил это сейчас)
- может идти вперед только как саксофон
- нет xml МАНИПУЛЯЦИЯ
JAXB: Плюсы
- позволяет получать доступ и обрабатывать XML
данные без знания XML
- двунаправленная
- эффективнее памяти, чем DOM
- SAX и DOM являются общими синтаксическими анализаторами, где
поскольку JAXB создает специфичный для
ваш XML Schmea
- преобразование данных: JAXB может конвертировать XML
к типам Java
- поддерживает манипулирование XML через объект
API
JAXB: Минусы
- может анализировать только действительный XML
Trax: Для преобразования XML из 1 формы в другую форму с использованием XSLT
Реализация
SAX, DOM, Stax, JAXB - это просто технические характеристики. Существует множество открытых и коммерческих реализаций этих спецификаций . Большую часть времени вы можете просто придерживаться того, что поставляется с JDK или вашим сервером приложений. Но иногда вам нужно использовать другую реализацию, которая предоставляется по умолчанию. И здесь вы можете по достоинству оценить JAXP wrapper api . JAXP позволяет переключать реализации через конфигурацию без необходимости изменять ваш код. Он также предоставляет API-интерфейс, независимый от синтаксического анализатора / спецификации, для анализа, преобразования, проверки и запроса документов XML.
Производительность и другие сравнения различных реализаций
Теперь стандарты хороши, но время от времени вы сталкиваетесь с этим сумасшедшим сценарием использования, когда вам приходится поддерживать синтаксический анализ XML-документа размером 100 гигабайт или вам нужна сверхбыстрая обработка XML (может быть, вы реализуете чип синтаксического анализатора XML), и это когда вам нужно отказаться от стандартов и искать другой способ действий. Речь идет об использовании правильного инструмента для правильной работы! И именно здесь я предлагаю вам взглянуть на vtd-xml
В первые дни SAX и DOM люди хотели иметь более простые API-интерфейсы, чем те, которые предоставлялись ими. JDOM , dom4j , XmlBeans , JiBX , Castor - я знаю, что они стали популярными.