I'm pleased to announce the release of
XOM 1.1, my free-as-in-speech (LGPL)
dual streaming/tree-based API for processing XML with Java.
Version 1.1 maintains backwards compatibility with XOM 1.0 while adding a number of important new features including XPath queries, document subset canonicalization, exclusive XML canonicalization,
external XSLT parameters, and xml:id
support. It also fixes a number of bugs that were present in XOM 1.0, uses less memory,
and is two to four times faster for many common operations.
The addition of XPath is especially significant. It removes the last remaining reason you might plausibly choose JDOM or dom4j instead of XOM. Going forward I think you'll find that XOM is more robust, faster, smaller, better documented, and much, much easier to use than the alternatives. While there's a lot of working legacy code out there using JDOM or dom4j that no one's going to throw away, new projects should seriously consider XOM. In my not so humble opinion, it is demonstrably the best library of its type. There are still use cases for which one would choose a pure streaming API such as SAX, StAX, or XNI instead. However if you want an XML tree model in Java, XOM is the obvious choice.