Введение

Интерфейс программирования приложений Streaming API for XML (StAX) — это интерфейс программирования приложений (API) для чтения и записи XML-документов, разработанный в сообществе языка программирования Java. Традиционно, XML API бывают двух типов:
Основанные на DOM — весь документ считывается в память в виде древовидной структуры для произвольного доступа вызывающего приложения.
Основанные на событиях — приложение регистрируется для получения событий при обнаружении сущностей в исходном документе. Оба подхода имеют свои преимущества: DOM, например, обеспечивает произвольный доступ к документу, а алгоритм, управляемый событиями, такой как SAX, имеет небольшой объем занимаемой памяти и обычно работает быстрее. Эти два подхода к доступу можно рассматривать как полярные противоположности. API на основе дерева обеспечивает неограниченный произвольный доступ и возможность манипулирования, в то время как API на основе событий представляет собой однократный проход по исходному документу. StAX был разработан как компромисс между этими двумя противоположностями. В модели StAX программной точкой входа является курсор, представляющий позицию в документе. Приложение перемещает курсор вперед, «извлекая» информацию из парсера по мере необходимости. Это отличается от API, основанного на событиях, такого как SAX, который «передает» данные приложению, требуя от приложения поддерживать состояние между событиями для отслеживания текущей позиции в документе.

Происхождение

StAX берет свое начало в ряде несовместимых pull API для XML, наиболее заметным из которых является XMLPULL, чьи авторы (Stefan Haustein и Aleksander Slominski) сотрудничали, в частности, с компаниями BEA Systems, Oracle, Sun и Джеймсом Кларком.