Введение
Интерфейс программирования приложений Streaming API for XML (StAX) — это интерфейс программирования приложений (API) для чтения и записи XML-документов, разработанный в сообществе языка программирования Java. Традиционно, XML API бывают двух типов:
Основанные на DOM — весь документ считывается в память в виде древовидной структуры для произвольного доступа вызывающего приложения.
Основанные на событиях — приложение регистрируется для получения событий при обнаружении сущностей в исходном документе. Оба подхода имеют свои преимущества: DOM, например, обеспечивает произвольный доступ к документу, а алгоритм, управляемый событиями, такой как SAX, имеет небольшой объем занимаемой памяти и обычно работает быстрее. Эти два подхода к доступу можно рассматривать как полярные противоположности. API на основе дерева обеспечивает неограниченный произвольный доступ и возможность манипулирования, в то время как API на основе событий представляет собой однократный проход по исходному документу. StAX был разработан как компромисс между этими двумя противоположностями. В модели StAX программной точкой входа является курсор, представляющий позицию в документе. Приложение перемещает курсор вперед, «извлекая» информацию из парсера по мере необходимости. Это отличается от API, основанного на событиях, такого как SAX, который «передает» данные приложению, требуя от приложения поддерживать состояние между событиями для отслеживания текущей позиции в документе.
Streaming API for XML (StAX) is an application programming interface (API) to read and write XML documents, originating from the Java programming language community. Traditionally, XML APIs are either:
DOM based the entire document is read into memory as a tree structure for random access by the calling application
event based the application registers to receive events as entities are encountered within the source document. Both have advantages: DOM, for example, allows for random access to the document, and event driven algorithm like SAX has a small memory footprint and is typically much faster. These two access metaphors can be thought of as polar opposites. A tree based API allows unlimited, random access and manipulation, while an event based API is a 'one shot' pass through the source document. StAX was designed as a median between these two opposites. In the StAX metaphor, the programmatic entry point is a cursor that represents a point within the document. The application moves the cursor forward 'pulling' the information from the parser as it needs. This is different from an event based API such as SAX which 'pushes' data to the application requiring the application to maintain state between events as necessary to keep track of location within the document.
Происхождение
StAX берет свое начало в ряде несовместимых pull API для XML, наиболее заметным из которых является XMLPULL, чьи авторы (Stefan Haustein и Aleksander Slominski) сотрудничали, в частности, с компаниями BEA Systems, Oracle, Sun и Джеймсом Кларком.