More Handlers
In the last chapter, I showed you the
ContentHandler and ErrorHandler
interfaces and briefly mentioned the
EntityResolver and DTDHandler
interfaces as well. Now that you’ve got a good understanding of
SAX basics, you’re ready to look at these two other
handlers.[5] You’ll find
that you use EntityResolver every now and then
(more if you’re writing applications to be resold), and that
the DTDHandler is something rarely ever pulled out
of your bag of tricks.
Using an EntityResolver
The
first of these new handlers is
org.xml.sax.EntityResolver. This interface does
exactly what it says: resolves entities (or at least declares a
method that resolves entities, but you get the idea). The interface
defines only a single method, and it looks like this:
public InputSource resolveEntity(String publicID, String systemID)
throws SAXException, IOException;You can create an implementation of this interface, and register it
with your XMLReader instance (through
setEntityResolver( ), not surprisingly). Once
that’s done, every time the reader comes across an entity
reference, it passes the public ID and system ID for that entity to
the resolveEntity( ) method of your
implementation. Now you can change the normal process of entity
resolution.
Typically, the XML reader resolves the entity through the specified
public or system ID, whether it be a file, URL, or other resource.
And if the return value from the resolveEntity( )
method is null, this process executes unchanged. As a result, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access