StAX означает Streaming API для XML. Это потоковый API на основе Java, управляемый событиями и анализирующий по запросу, для чтения и записи XML-документов.

Традиционно XML API:

  • на основе дерева (как DOM) - все содержимое XML считывается и собирается в иерархический граф объектов в памяти.
  • на основе событий (например, SAX) - приложение регистрируется для получения событий, когда в исходном документе встречаются сущности.

Оба имеют преимущества: парсеры на основе дерева позволяют произвольный доступ к документу, в то время как последний требует меньшего объема памяти и обычно работает быстрее. StAX находится между этими двумя методологиями, поскольку приложение "извлекает" данные из потока данных XML в удобное для него время. Приложение (а не парсер) контролирует получение данных из xml. Он был представлен в JSR-173 в марте 2004 года и является новой функцией JDK 6.0.

Реализации StAX имеют API-интерфейсы для чтения и записи. Оба имеют два уровня: доступ к "сырому" курсору и доступ к "событиям" на основе объектов.

"Необработанные" классы доступа к курсору, включенные в JDK:

В JDK включены следующие классы, основанные на "событиях":

Другие реализации:

Сравнение производительности с несколькими базовыми примерами фрагментов кода можно найти здесь.