background image

Comparing StAX to Other JAXP APIs

<< Pull Parsing Versus Push Parsing | StAX API >>
<< Pull Parsing Versus Push Parsing | StAX API >>
80
S
TREAMING
API
FOR
XML
· Parsing WSDL
· Virtual data sources
· Viewing as XML data stored in databases
· Viewing data in Java objects created by XML data binding
· Navigating a DOM tree as a stream of events
· Parsing specific XML vocabularies
· Pipelined XML processing
A complete discussion of all these use cases is beyond the scope of this chapter.
Please refer to the StAX specification for further information.
Comparing StAX to Other JAXP APIs
As an API in the JAXP family, StAX can be compared, among other APIs, to
SAX, TrAX, and JDOM. Of the latter two, StAX is not as powerful or flexible as
TrAX or JDOM, but neither does it require as much memory or processor load to
be useful, and StAX can, in many cases, outperform the DOM-based APIs. The
same arguments outlined above, weighing the cost/benefits of the DOM model
versus the streaming model, apply here.
With this in mind, the closest comparisons between can be made between StAX
and SAX, and it is here that StAX offers features that are beneficial in many
cases; some of these include:
· StAX-enabled clients are generally easier to code than SAX clients. While
it can be argued that SAX parsers are marginally easier to write, StAX
parser code can be smaller and the code necessary for the client to interact
with the parser simpler.
· StAX is a bidirectional API, meaning that it can both read and write XML
documents. SAX is read only, so another API is needed if you want to write
XML documents.
· SAX is a push API, whereas StAX is pull. The trade-offs between push and
pull APIs outlined above apply here.