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 Dom or DOM may refer to:
People and fictional characters
* Dom (given name), including fictional characters
* Dom (surname)
* Dom La Nena (born 1989), stage name of Brazilian-born cellist, singer and songwriter Dominique Pinto
* Dom people, an et ...
, 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.
Origins
StAX has its roots in a number of incompatible pull APIs for XML, most notabl
XMLPULL the authors of which (Stefan Haustein and Aleksander Slominski) collaborated with, amongst others,
BEA Systems,
Oracle
An oracle is a person or agency considered to provide wise and insightful counsel or prophetic predictions, most notably including precognition of the future, inspired by deities. As such, it is a form of divination.
Description
The word '' ...
,
Sun and
James Clark.
Examples
From JSR-173 Specification• Final, V1.0 (used under fair use).
Quote:
:The following Java API shows the main methods for reading XML in the cursor approach.
public interface XMLStreamReader
:The writing side of the API has methods that correspond to the reading side for “StartElement” and “EndElement” event types.
public interface XMLStreamWriter
:5.3.1 XMLStreamReader
:This example illustrates how to instantiate an input factory, create a reader and iterate over the elements of an XML document.
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(...);
while (xmlStreamReader.hasNext())
See also
Competing and complementary ways to process XML in Java (the order is loosely based on initial date of introduction):
*
Document Object Model (DOM), the first standardized, language/platform-independent tree-based XML processing model; alternate Java tree models include
JDOM,
Dom4j, and
XOM
*
Simple API for XML (SAX), the standard XML push API
*
Java XML Binding API (JAXB), works on top of another parser (usually streaming parser), binds contained data to/from Java objects.
*
Streaming XML
Streaming XML is a synonym for dynamic data in XML format.
Another popular use of this term refers to one method of consuming XML data – largely known as Simple API for XML. This is via asynchronous events that are generated as the XML data is ...
*
XQuery API for Java
External links
Introduction to StAXXML.com, Harold, Elliotte Rusty
Article on XML Pull (and StAX) design patterns by Aleksander Slominski.
StAX Parser - Cursor & Iterator APIsArticle on Cursor & Iterator APIs by HowToDoInJava.
{{Java EE 7
Java platform
Application programming interfaces
XML parsers
Articles with example Java code