Открыть сервис

Apache Xerces2

Apache Xerces2 — это семейство библиотек для синтаксического разбора (парсинга), валидации и обработки XML-документов, написанных на языке Java. Xerces2 является второй основной версией проекта Xerces, разрабатываемого в рамках инкубатора Apache Software Foundation, и предоставляет реализацию стандартных API для работы с XML, включая DOM (Document Object Model), SAX (Simple API for XML) и StAX (Streaming API for XML). Библиотека широко используется в корпоративных Java-приложениях, веб-серверах и инструментах разработки для чтения, проверки и преобразования XML-данных.

История

Проект Xerces начался как часть технологии XML от компании IBM. В 1999 году исходный код был передан в Apache Software Foundation, где он стал одним из первых проектов в области обработки XML. Первая версия, Xerces-J 1.x, была выпущена в 2000 году и поддерживала только DOM и SAX. В 2001 году вышла вторая версия — Xerces2, которая была полностью переработана для соответствия новым спецификациям W3C (World Wide Web Consortium) и Java Community Process.

Основные вехи развития:

  • 2001 год: Релиз Xerces2 2.0.0. Введена поддержка XML Schema 1.0.
  • 2003 год: Версия 2.6.0. Добавлена поддержка XInclude (XML Inclusions) и улучшена производительность.
  • 2005 год: Версия 2.7.0. Реализована поддержка DOM Level 3 и SAX 2.0.2.
  • 2007 год: Версия 2.9.0. Введена поддержка StAX (JSR 173) и XML Schema 1.1 (частично).
  • 2010 год: Последний стабильный релиз Xerces2 2.11.0. Дальнейшее развитие проекта было приостановлено, так как основные функции были включены в стандартную библиотеку Java (пакет javax.xml.parsers).

Несмотря на прекращение активной разработки, Xerces2 остаётся популярным выбором для проектов, требующих высокой степени совместимости со старыми версиями Java или специфических функций, не реализованных в стандартном JDK.

Архитектура и компоненты

Xerces2 состоит из нескольких модулей, каждый из которых отвечает за определённый аспект обработки XML:

Парсеры

  • SAX-парсер: Реализует событийно-ориентированный интерфейс SAX 2.0.2. Позволяет обрабатывать XML-документы последовательно, не загружая их целиком в память, что эффективно для больших файлов.
  • DOM-парсер: Реализует интерфейс DOM Level 3. Строит в памяти древовидное представление документа, позволяя произвольный доступ к узлам.
  • StAX-парсер: Реализует потоковый API (JSR 173). Поддерживает как курсорный (XMLStreamReader), так и событийный (XMLEventReader) подходы.

Валидаторы

  • Валидация DTD: Поддержка Document Type Definition (DTD) — устаревшего, но всё ещё распространённого способа определения структуры XML.
  • Валидация XML Schema: Полная поддержка XML Schema 1.0 (W3C Recommendation) и частичная поддержка XML Schema 1.1 (включая assert и alternative).
  • Валидация RELAX NG: Поддержка схем RELAX NG (Compact и XML синтаксис) через модуль xercesImpl.

Сериализаторы

  • XMLSerializer: Преобразует DOM-дерево обратно в XML-текст. Поддерживает настройки кодировки, отступов и обработки пробелов.
  • HTMLSerializer: Экспорт в HTML (с учётом особенностей HTML-тегов, таких как br или img).

Утилиты

  • XInclude: Обработка включений (<xi:include>) для композиции документов из нескольких файлов.
  • XPointer: Поддержка указателей на фрагменты XML-документов (частично).

Применение

Xerces2 используется в широком спектре Java-приложений:

  • Веб-серверы: Apache Tomcat, Jetty и JBoss используют Xerces2 для обработки конфигурационных XML-файлов (например, web.xml, server.xml).
  • Инструменты сборки: Apache Ant, Maven и Gradle (через плагины) применяют Xerces2 для парсинга XML-конфигураций (например, pom.xml).
  • Библиотеки и фреймворки: Spring Framework, Hibernate и JAXB (Java Architecture for XML Binding) могут использовать Xerces2 в качестве провайдера парсера.
  • Системы электронного документооборота: Обработка XML-документов, соответствующих стандартам, таким как UBL (Universal Business Language) или OASIS.
  • Научные и промышленные системы: Обработка больших XML-файлов (например, в биоинформатике или геоинформатике) благодаря эффективной SAX-реализации.

Критика и ограничения

Несмотря на широкое распространение, Xerces2 имеет ряд недостатков, отмеченных сообществом разработчиков:

  • Производительность: В некоторых тестах Xerces2 уступает более новым парсерам, таким как Woodstox или Aalto, особенно при потоковой обработке (StAX).
  • Потребление памяти: DOM-реализация Xerces2 может быть ресурсоёмкой при работе с очень большими документами, так как строит полное дерево в памяти.
  • Устаревание: Последний релиз вышел в 2010 году, и проект не обновляется для поддержки новых версий Java (например, модульной системы Java 9+). Однако он остаётся совместимым с Java 8 и более ранними версиями.
  • Сложность конфигурации: Для настройки валидации и обработки ошибок требуется глубокое понимание API и свойств (properties) парсера.

Конкуренты

На рынке Java-парсеров Xerces2 конкурирует с несколькими проектами:

  • Woodstox: Легковесный StAX-парсер с высокой производительностью, часто используемый в качестве замены Xerces2 для потоковой обработки.
  • Aalto: Ещё один высокопроизводительный StAX-парсер, разработанный автором Woodstox.
  • Xerces3: Третья версия проекта (Xerces3), которая была начата, но не завершена. Она должна была объединить лучшие черты Xerces2 и Woodstox, но разработка была остановлена.
  • Встроенный парсер JDK: Начиная с Java 6, в стандартную библиотеку Java включён парсер (на основе Xerces2), который является предпочтительным для большинства приложений, так как не требует дополнительных зависимостей.

Интересные факты

  • Название «Xerces» происходит от имени древнеперсидского царя Ксеркса I (Xerxes I), что является игрой слов с «parser» (парсер).
  • Xerces2 был одним из первых проектов, реализовавших поддержку XML Schema 1.0, что способствовало его популярности в начале 2000-х годов.
  • В 2015 году проект был переведён в «спящий» режим (dormant) в инкубаторе Apache, но исходный код остаётся доступным в репозитории Apache SVN.

Источники

  • Apache Xerces2 — официальная документация (Apache Software Foundation)
  • «XML Parsing in Java: Xerces2 vs. Woodstox» — сравнительный анализ, журнал JavaWorld (2008)
  • «Java XML and JAXP: A Practical Guide» — книга Эллиота Русти Гарольда (2003)
  • Спецификации W3C: DOM Level 3, SAX 2.0.2, XML Schema 1.0
  • Репозиторий Apache Xerces2 на GitHub (зеркало)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →