Since there wasn't a decent XML parser, I've started writing one myself. Main
features:

    * Allows 100% round-tripping, even for weird whitespace between attributes
      in the start tag or in the end tag
    * Suitable for building editors and filters which want/need to preserve
      the original file layout as much as possible
    * Error messages have line and column information
    * Easy to reuse individual components
    * XML 1.0 compatible 

Needs Java 5 or better.

