SAX is pretty easy to use too and just stay away from DOM if you don't have a really good reason to use it - old, clunky API in my opinion.
I don't think there are any modern 3rd party libraries that feature anything especially useful that's missing from the stl and the standard libraries have the usual advantages of being extremely well tested, documented and stable.
Unmarshaller (you get a class for this from Instance).
The program asks for the next element when it's ready just like a cursor/iterator. Read document: JAXB: The newest implementation to read XML documents: Is part of Java 6 in v2.
For folks interested in using JDOM, but afraid that hasn't been updated in a while (especially not leveraging Java generics), there is a fork called Coffee DOM which exactly addresses these aspects and modernizes the JDOM API, read more here: and download it from the project page at: https://github.com/cdmckay/coffeedom If you want a DOM-like API - that is, one where the XML parser turns the document into a tree of Element and Attribute nodes - then there are at least four to choose from: DOM itself, JDOM, DOM4J, and XOM.
The only possible reason to use DOM is because it's perceived as a standard and is supplied in the JDK: in all other respects, the others are all superior.
You use annotations to specify which classes should be elements (@Xml Root Element) and which fields are elements(@Xml Element) or attributes (@Xml Attribute, what a surprise!
) Examples shamelessly copied from some old lecture slides ;-) Edit: About "which API shoild I use? Well it depends - not all APIs have the same capabilities as you see, but if you have control over the classes you use to map the XML document JAXB is my personal favorite, really elegant and simple solution (though I haven't used it for really large documents, it could get a bit complex).