Bare XML is a "bare" XML parser with all primary parsing done via a simple state engine with about 20 or so different states. A tree structure is created during parsing, with all node names and values linked via pointers directly into the original text buffer. As such, Bare XML is extremely fast and simple. Currently, the parser is available in a perl module with Perl glue to turn the created tree into a Perl hash tree. The module name is XML::Bare.
This module implements an XML::SAX filter which adds line numbers and column numbers to errors generated by SAX handlers further down the pipeline. It was written so that XML::Validator::Schema could blame the correct line of XML for validation failures. You can use this module to enhance the error messages generated by any SAX handler.
XML::Twig is an XML transformation module. It can be used to process huge documents while still being in tree mode; is not bound by DOM or SAX, so it is very Perlish and offers a very comprehensive set of methods; is simple to use; and DWIMs as much as possible. What it doesn't offer: full SAX support (it can export SAX, but only reads XML); full XPath support (unless you use XML::Twig::XPath); nor DOM support. It is also a big module, and with over 500 methods available it can be a bit overwhelming. A good starting point is the online tutorial.