Before leaving this introduction to parsing XML documents with SAX, there are a few pitfalls to make you aware of. These “gotchas” will help you avoid common programming mistakes when using SAX, and I will discuss more of these for other APIs in the appropriate sections.
For those of you who are forced to use a SAX 1.0 parser, perhaps in an existing application, don’t despair. First, you always have the option of changing parsers; keeping current on SAX standards is an important part of an XML parser’s responsibility, and if your vendor is not doing this, you may have other concerns to address with them as well. However, there are certainly cases where you are forced to use a parser because of legacy code or applications; in these situations, you are still not left out in the cold.
SAX 2.0 includes a helper class,
which can actually cause a SAX 1.0
implementation to behave like a SAX 2.0
implementation. This handy class takes in a 1.0
Parser implementation as an argument and then can
be used instead of that implementation. It allows a
ContentHandler to be set (which is a SAX 2.0
construct), and handles all namespace callbacks properly (also a
feature of SAX 2.0). The only functionality loss you will see is
that skipped entities will not be reported, as
this capability was not available in a 1.0 implementation in any
form, and cannot be emulated by a 2.0 adapter class. Example 3-3 shows ...