Sun Java Streaming XML ParserPart of Project GlassFish
JSR 173 defines a new Streaming API for XML (StAX). The Sun Java Streaming XML Parser (SJSXP) is an efficient implementation of the StAX API which is fully compliant with the XML 1.0 and Namespace 1.0 specifications.
Project News: (see RSS)
The Streaming API for XML (StAX) is the new generation of XML APIs in Java. StAX is based on the so-called pull model in which an application queries the parser for the next parsing event, but never surrenders control to the parser during the process. Stated differently, StAX essentially turns the SAX processing model upside down. Instead of the parser controlling the application's flow, and the application reacting to parsing events, it is the application that controls the flow by pulling events from the parser.
This parsing model has several advantages over SAX. First, it often makes the application logic easier to understand given that it is the application and not the parser that is in control of the process (stated differently, the application does not get "pushed around" :). Second, if implemented correctly, there are a number of new optimizations that are possible when the application does not need to process the entire infoset. In particular, it is possible to lazily wait until the application requests a certain infoset item before it is actually constructed (a good example of this is lazy creation of Java strings).
Both StAX and SAX work in streaming fashion and allow only forward reading. However, the StAX model gives the application a lot more control: for example, applications have the option of pausing and resuming the parsing process, skipping over unneeded content, etc. For further information please refer to the Java Web Services Tutorial.
The StAX cursor model (XMLStreamReader) is the most efficient way to parse XML since it provide a natural interface by which the parser can compute values lazily. SJSXP takes full advantage of this by delaying the creation of certain objects until they are needed. SJSXP's XML token scanner is based on Xerces 2 but has been modified to accomodate the new pull model. The result is an implementation that is fully complaint with the XML specifications while at the same time offering very good performance.
Sun Java Streaming XML Parser (SJSXP) 1.0.2 is now available for download. Please refer to the Release Notes and Changelog for updates and bug fixes. Note that the jar for JSR 173 API must be downloaded separately and placed in the same directory as sjsxp.jar. For the following downloads, this means the installed directory.
Latest Binary Drops: With latest bug fixes but not necessarily stable
JSR 173 APIs: Should be placed in the same location as sjsxp.jar
StAX Utilities: Set of utility classes that make it easy for developers to integrate StAX into their existing XML processing applications
Sun Java Streaming XML Parser is available under CDDL v1.0 and GPL v2.
Your participation is fundamental to make this project a success. There are many ways to participate in this project; we encourage you to try SJSXP and send us feedback to firstname.lastname@example.org with suggestions for improvements.