The Streaming API for XML (StAX)

 

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 pullingevents 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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值