Где я могу найти подробное сравнение фреймворков Java XML?
Я пытаюсь выбрать структуру XML-обработки для своих проектов Java, и я потерялся в именах. XOM, JDOM и т. Д. Где я могу найти подробное сравнение всех популярных фреймворков Java XML?
- Как разобрать XML с помощью jsoup
- Как читать и писать xml-файлы?
- Требуется наличие пробелов между publicId и systemId
- Как разбирать тег с тем же именем в Android XML DOM Parsing
- Лучший модуль узла для синтаксического анализа XML
- Как анализировать неверный (плохой / неправильно сформированный) XML?
- oracle plsql: как анализировать XML и вставлять в таблицу
- findViewById () возвращает null - попробовал ВСЕ
Как заметил Блейз, палка со стандартами. Но за этот период создано несколько стандартов для решения различных проблем / случаев. Какой из них выбрать полностью зависит от вашего требования. Я надеюсь, что приведенное ниже сравнение поможет вам выбрать правильный вариант.
Теперь вам нужно выбрать две вещи . API и реализации API (их много)
API
SAX: Плюсы
- событие основано
- эффективная память
- быстрее, чем DOM
- поддерживает проверку схемы
SAX: Против
- Нет объектной модели, вам нужно задействовать события и создать свое
- Одиночный синтаксический анализ xml и может идти только вперед
- читать только api
- поддержка xpath отсутствует
- немного сложнее в использовании
DOM: Плюсы
- объектная модель в памяти
- сохраняет порядок элементов
- двунаправленная
- читать и писать api
- xml MANIPULATION
- простой в использовании
- поддерживает проверку схемы
DOM: Против
- память для больших XML-документов (обычно используется для документов XML менее 10 мб)
- помедленнее
- общая модель, т. е. работа с узлами
Стакс: Плюсы
- Лучшее из SAX и DOM, т.е. простота DOM и эффективность SAX
- эффективная память
- Модель Pull
- читать и писать api
- поддерживает подпункт
- может одновременно просматривать несколько документов в одном streamе
- parallel processing XML проще
Stax: Против
- нет поддержки валидации схемы (насколько я помню, не уверен, добавили ли они ее сейчас)
- может идти только вперед, как саксофон
- нет xml MANIPULATION
JAXB: Плюсы
- позволяет вам получать и обрабатывать XML-данные без необходимости знать XML
- двунаправленная
- больше памяти, чем DOM
- SAX и DOM – это общие парсеры, где JAXB создает парсер, специфичный для вашего XML-файла Schmea
- преобразование данных: JAXB может преобразовывать xml в типы java
- поддерживает XML MANIPULATION через API объектов
JAXB: Против
- может только анализировать действительный XML
Trax: для преобразования XML из 1 формы в другую форму с использованием XSLT
Реализации
SAX, DOM, Stax, JAXB – это всего лишь спецификации. Существует множество открытых и коммерческих реализаций этих спецификаций . В большинстве случаев вы можете просто придерживаться того, что поставляется с JDK или вашим сервером приложений. Но иногда вам нужно использовать другую реализацию, предоставленную по умолчанию. И здесь вы можете оценить обертку JAXP api . JAXP позволяет вам переключать реализации через конфигурацию без необходимости изменения кода. Он также предоставляет независимый parser / spec api для анализа, преобразования, проверки и запросов XML-документов.
Производительность и другие сравнения различных реализаций
- Stax: http://java.sun.com/performance/reference/whitepapers/StAX-1_0.pdf
- Большинство API: http://www.ibm.com/developerworks/xml/library/x-databdopt2/
- Обсуждение JAXB и XmlBeans на SO: JAXB vs Apache XMLBeans
- http://www.ibm.com/developerworks/xml/library/x-injava/
Теперь стандарты хороши, но время от времени вы сталкиваетесь с этим сумасшедшим usecase, где вам нужно поддерживать parsing XML-документа размером 100 гигабайт или вам нужна ультрабыстрая обработка XML (может быть, вы используете XML-чип парсера), и это когда вам нужно сбросить стандарты и искать другой способ делать вещи. Его использование правильного инструмента для правильной работы! И здесь я предлагаю вам взглянуть на vtd-xml
В первые дни SAX и DOM людям нужен более простой API, чем любой из них. JDOM , dom4j , XmlBeans , JiBX , Castor – те, кого я знаю, которые стали популярными.
@ Pangea
JAXB против DOM и SAX
JAXB напрямую не сопоставим с DOM и SAX. API-интерфейсы Java DOM и SAX – это API-интерфейсы более низкого уровня для анализа XML-документов, тогда как JAXB (Java API для привязки XML) – это API более высокого уровня для преобразования XML-элементов и атрибутов в иерархию объектов Java (и наоборот). Реализации JAXB, скорее всего, будут использовать парсер DOM или SAX за кулисами для фактического анализа входных данных XML.