org.xml.sax.helpers

Class XMLReaderAdapter

Implemented Interfaces:
ContentHandler, Parser

public class XMLReaderAdapter
extends java.lang.Object
implements Parser, ContentHandler

Adapt a SAX2 XMLReader as a SAX1 Parser.
This module, both source code and documentation, is in the Public Domain, and comes with NO WARRANTY. See http://www.saxproject.org for further information.

This class wraps a SAX2 XMLReader and makes it act as a SAX1 Parser. The XMLReader must support a true value for the http://xml.org/sax/features/namespace-prefixes property or parsing will fail with a SAXException; if the XMLReader supports a false value for the http://xml.org/sax/features/namespaces property, that will also be used to improve efficiency.

Since:
SAX 2.0

See Also:
Parser, XMLReader

Constructor Summary

XMLReaderAdapter()
Create a new adapter.
XMLReaderAdapter(XMLReader xmlReader)
Create a new adapter.

Method Summary

void
characters(ch[] , int start, int length)
Adapt a SAX2 characters event.
void
endDocument()
End document event.
void
endElement(String uri, String localName, String qName)
Adapt a SAX2 end element event.
void
endPrefixMapping(String prefix)
Adapt a SAX2 end prefix mapping event.
void
ignorableWhitespace(ch[] , int start, int length)
Adapt a SAX2 ignorable whitespace event.
void
parse(String systemId)
Parse the document.
void
parse(InputSource input)
Parse the document.
void
processingInstruction(String target, String data)
Adapt a SAX2 processing instruction event.
void
setDTDHandler(DTDHandler handler)
Register the DTD event handler.
void
setDocumentHandler(DocumentHandler handler)
Register the SAX1 document event handler.
void
setDocumentLocator(Locator locator)
Set a document locator.
void
setEntityResolver(EntityResolver resolver)
Register the entity resolver.
void
setErrorHandler(ErrorHandler handler)
Register the error event handler.
void
setLocale(Locale locale)
Set the locale for error reporting.
void
skippedEntity(String name)
Adapt a SAX2 skipped entity event.
void
startDocument()
Start document event.
void
startElement(String uri, String localName, String qName, Attributes atts)
Adapt a SAX2 start element event.
void
startPrefixMapping(String prefix, String uri)
Adapt a SAX2 start prefix mapping event.

Constructor Details

XMLReaderAdapter

public XMLReaderAdapter()
            throws SAXException
Create a new adapter.

Use the "org.xml.sax.driver" property to locate the SAX2 driver to embed.

Throws:
SAXException - If the embedded driver cannot be instantiated or if the org.xml.sax.driver property is not specified.


XMLReaderAdapter

public XMLReaderAdapter(XMLReader xmlReader)
Create a new adapter.

Create a new adapter, wrapped around a SAX2 XMLReader. The adapter will make the XMLReader act like a SAX1 Parser.

Parameters:
xmlReader - The SAX2 XMLReader to wrap.

Method Details

characters

public void characters(ch[] ,
                       int start,
                       int length)
            throws SAXException
Adapt a SAX2 characters event.
Specified by:
characters in interface ContentHandler

Parameters:
start - The starting position in the array.
length - The number of characters to use.

Throws:
SAXException - The client may raise a processing exception.

See Also:
ContentHandler.characters(ch[],int,int)


endDocument

public void endDocument()
            throws SAXException
End document event.
Specified by:
endDocument in interface ContentHandler

Throws:
SAXException - The client may raise a processing exception.

See Also:
ContentHandler.endDocument()


endElement

public void endElement(String uri,
                       String localName,
                       String qName)
            throws SAXException
Adapt a SAX2 end element event.
Specified by:
endElement in interface ContentHandler

Parameters:
uri - The Namespace URI.
localName - The Namespace local name.
qName - The qualified (prefixed) name.

Throws:
SAXException - The client may raise a processing exception.

See Also:
ContentHandler.endElement(String,String,String)


endPrefixMapping

public void endPrefixMapping(String prefix)
Adapt a SAX2 end prefix mapping event.
Specified by:
endPrefixMapping in interface ContentHandler

Parameters:
prefix - The prefix being mapped.

See Also:
ContentHandler.endPrefixMapping(String)


ignorableWhitespace

public void ignorableWhitespace(ch[] ,
                                int start,
                                int length)
            throws SAXException
Adapt a SAX2 ignorable whitespace event.
Specified by:
ignorableWhitespace in interface ContentHandler

Parameters:
start - The starting position in the array.
length - The number of characters to use.

Throws:
SAXException - The client may raise a processing exception.

See Also:
ContentHandler.ignorableWhitespace(ch[],int,int)


parse

public void parse(String systemId)
            throws IOException,
                   SAXException
Parse the document.

This method will throw an exception if the embedded XMLReader does not support the http://xml.org/sax/features/namespace-prefixes property.

Specified by:
parse in interface Parser

Parameters:
systemId - The absolute URL of the document.

Throws:
SAXException - If there is a problem processing the document.

See Also:
parse(InputSource), org.xml.sax.Parser.parse(java.lang.String)


parse

public void parse(InputSource input)
            throws IOException,
                   SAXException
Parse the document.

This method will throw an exception if the embedded XMLReader does not support the http://xml.org/sax/features/namespace-prefixes property.

Specified by:
parse in interface Parser

Parameters:
input - An input source for the document.

Throws:
SAXException - If there is a problem processing the document.

See Also:
parse(java.lang.String), Parser.parse(InputSource)


processingInstruction

public void processingInstruction(String target,
                                  String data)
            throws SAXException
Adapt a SAX2 processing instruction event.
Specified by:
processingInstruction in interface ContentHandler

Parameters:
target - The processing instruction target.
data - The remainder of the processing instruction

Throws:
SAXException - The client may raise a processing exception.

See Also:
ContentHandler.processingInstruction(String,String)


setDTDHandler

public void setDTDHandler(DTDHandler handler)
Register the DTD event handler.
Specified by:
setDTDHandler in interface Parser

Parameters:
handler - The new DTD event handler.

See Also:
Parser.setDTDHandler(DTDHandler)


setDocumentHandler

public void setDocumentHandler(DocumentHandler handler)
Register the SAX1 document event handler.

Note that the SAX1 document handler has no Namespace support.

Specified by:
setDocumentHandler in interface Parser

Parameters:
handler - The new SAX1 document event handler.

See Also:
Parser.setDocumentHandler(DocumentHandler)


setDocumentLocator

public void setDocumentLocator(Locator locator)
Set a document locator.
Specified by:
setDocumentLocator in interface ContentHandler

Parameters:
locator - The document locator.

See Also:
ContentHandler.setDocumentLocator(Locator)


setEntityResolver

public void setEntityResolver(EntityResolver resolver)
Register the entity resolver.
Specified by:
setEntityResolver in interface Parser

Parameters:
resolver - The new resolver.

See Also:
Parser.setEntityResolver(EntityResolver)


setErrorHandler

public void setErrorHandler(ErrorHandler handler)
Register the error event handler.
Specified by:
setErrorHandler in interface Parser

Parameters:
handler - The new error event handler.

See Also:
Parser.setErrorHandler(ErrorHandler)


setLocale

public void setLocale(Locale locale)
            throws SAXException
Set the locale for error reporting.

This is not supported in SAX2, and will always throw an exception.

Specified by:
setLocale in interface Parser

Parameters:
locale - the locale for error reporting.

Throws:
SAXException - Thrown unless overridden.

See Also:
Parser.setLocale(Locale)


skippedEntity

public void skippedEntity(String name)
            throws SAXException
Adapt a SAX2 skipped entity event.
Specified by:
skippedEntity in interface ContentHandler

Parameters:
name - The name of the skipped entity.

Throws:
SAXException - Throwable by subclasses.

See Also:
ContentHandler.skippedEntity(String)


startDocument

public void startDocument()
            throws SAXException
Start document event.
Specified by:
startDocument in interface ContentHandler

Throws:
SAXException - The client may raise a processing exception.

See Also:
ContentHandler.startDocument()


startElement

public void startElement(String uri,
                         String localName,
                         String qName,
                         Attributes atts)
            throws SAXException
Adapt a SAX2 start element event.
Specified by:
startElement in interface ContentHandler

Parameters:
uri - The Namespace URI.
localName - The Namespace local name.
qName - The qualified (prefixed) name.
atts - The SAX2 attributes.

Throws:
SAXException - The client may raise a processing exception.

See Also:
ContentHandler.endDocument()


startPrefixMapping

public void startPrefixMapping(String prefix,
                               String uri)
Adapt a SAX2 start prefix mapping event.
Specified by:
startPrefixMapping in interface ContentHandler

Parameters:
prefix - The prefix being mapped.
uri - The Namespace URI being mapped to.

See Also:
ContentHandler.startPrefixMapping(String,String)