Streaming xml-parsers like SAX and StAX are faster and more memory efficient than parsers building a tree-structure like DOM-parsers. SAX is a push parser, meaning that it\'
It's all a balance.
You can turn a SAX parser into a pull parser using a blocking queue and some thread trickery so, to me, there is much less difference than there first seems.
I believe currently StAX needs to be packaged through a third-party jar while SAX comes free in javax.
I recently chose SAX and built a pull parser around it so I did not need to rely on a third-party jar.
Future versions of Java will almost certainly contain a StAX implementation so the problem goes away.