Подтвердить что ты не робот

Где я могу найти подробное сравнение фреймворков Java XML?

Я пытаюсь выбрать структуру XML-обработки для своих проектов Java, и я теряюсь в именах. XOM, JDOM и т.д. Где я могу найти подробное сравнение всех популярных фреймворков Java XML?

4b9b3361

Ответ 1

Как заметил Блейз, придерживались стандартов. Но за этот период создано несколько стандартов для решения различных проблем/случаев. Какой из них выбрать полностью зависит от вашего требования. Я надеюсь, что приведенное ниже сравнение поможет вам выбрать правильный вариант.

Теперь есть две вещи, которые вам нужно выбрать. API и реализации API (их много)

API

SAX: Плюсы

  • основан на событиях
  • эффективная память
  • быстрее, чем DOM
  • поддерживает проверку схемы

SAX: минус

  • Нет объектной модели, вам нужно события и создать себя.
  • Одиночный анализ xml и может только идти вперед
  • только для чтения api
  • поддержка xpath
  • немного сложнее использовать

DOM: Плюсы

  • объектная модель в памяти
  • сохраняет порядок элементов
  • двунаправленным
  • читать и писать api
  • xml MANIPULATION
  • прост в использовании
  • поддерживает проверку схемы

DOM: Против

  • память для больших XML-документов (обычно используется для XML-документов менее 10 мб).
  • медленнее
  • общая модель, т.е. работа с узлами

Stax: Pros

  • Лучший из SAX и DOM, т.е. простота DOM и эффективность SAX
  • эффективная память
  • Модель Pull
  • читать и писать api
  • поддерживает подпункт
  • может одновременно читать несколько документов в одном потоке
  • параллельная обработка XML проще

Stax: Cons

  • поддержка проверки схемы (пока как я помню, не знаю, есть ли у них добавили его сейчас)
  • может идти только вперед, как sax
  • no xml MANIPULATION

JAXB: Pros

  • позволяет вам получать доступ и обрабатывать 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 wrapper api. JAXP позволяет вам переключать реализации через конфигурацию без необходимости изменения кода. Он также предоставляет независимый parser/spec api для анализа, преобразования, проверки и запросов XML-документов.

Производительность и другие сравнения различных реализаций


Теперь стандарты хороши, но время от времени вы сталкиваетесь с этим сумасшедшим usecase, где вам нужно поддерживать синтаксический анализ XML-документа, размер 100 гигабайт, или вам нужно сверхбыстрая обработка XML (может быть, вы используете XML-чип парсера), и это когда вам нужно сбросить стандарты и искать другой способ делать вещи. Его использование правильного инструмента для правильной работы! И здесь я предлагаю вам взглянуть на vtd-xml

В первые дни SAX и DOM людям нужен более простой API, чем любой из них. JDOM, dom4j, XmlBeans, JiBX, Castor - те, которые, как я знаю, стали популярными.

Ответ 2

@Pangea

JAXB vs DOM и SAX

JAXB напрямую не сопоставим с DOM и SAX. Java DOM и SAX парсинг API - это API нижнего уровня для анализа XML-документов, а JAXB (Java API для привязки XML) - это API более высокого уровня для преобразования XML элементов и атрибутов иерархии объектов Java (и наоборот). Реализации JAXB, скорее всего, будут использовать парсер DOM или SAX за кулисами для фактического анализа входных данных XML.