Class SAXReader
- java.lang.Object
-
- org.dom4j.io.SAXReader
-
public class SAXReader extends java.lang.Object
SAXReader
creates a DOM4J tree from SAX parsing events.The actual SAX parser that is used by this class is configurable so you can use your favourite SAX parser if you wish. DOM4J comes configured with its own SAX parser so you do not need to worry about configuring the SAX parser.
To explicitly configure the SAX parser that is used via Java code you can use a constructor or use the
setXMLReader(XMLReader)
orsetXMLReaderClassName(String)
methods.If the parser is not specified explicitly then the standard SAX policy of using the
org.xml.sax.driver
system property is used to determine the implementation class ofXMLReader
.If the
org.xml.sax.driver
system property is not defined then JAXP is used via reflection (so that DOM4J is not explicitly dependent on the JAXP classes) to load the JAXP configured SAXParser. If there is any error creating a JAXP SAXParser an informational message is output and then the default (Aelfred) SAX parser is used instead.If you are trying to use JAXP to explicitly set your SAX parser and are experiencing problems, you can turn on verbose error reporting by defining the system property
org.dom4j.verbose
to be "true" which will output a more detailed description of why JAXP could not find a SAX parserFor more information on JAXP please go to Sun's Java & XML site
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
SAXReader.SAXEntityResolver
-
Constructor Summary
Constructors Constructor Description SAXReader()
This method internally callsSAXParserFactory
.newInstance().newSAXParser().getXMLReader()
orXMLReaderFactory.createXMLReader()
.SAXReader(boolean validating)
This method internally callsSAXParserFactory
.newInstance().newSAXParser().getXMLReader()
orXMLReaderFactory.createXMLReader()
.SAXReader(java.lang.String xmlReaderClassName)
SAXReader(java.lang.String xmlReaderClassName, boolean validating)
SAXReader(DocumentFactory factory)
This method internally callsSAXParserFactory
.newInstance().newSAXParser().getXMLReader()
orXMLReaderFactory.createXMLReader()
.SAXReader(DocumentFactory factory, boolean validating)
This method internally callsSAXParserFactory
.newInstance().newSAXParser().getXMLReader()
orXMLReaderFactory.createXMLReader()
.SAXReader(org.xml.sax.XMLReader xmlReader)
SAXReader(org.xml.sax.XMLReader xmlReader, boolean validating)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addHandler(java.lang.String path, ElementHandler handler)
Adds theElementHandler
to be called when the specified path is encounted.protected void
configureReader(org.xml.sax.XMLReader reader, org.xml.sax.helpers.DefaultHandler handler)
Configures the XMLReader before useprotected SAXContentHandler
createContentHandler(org.xml.sax.XMLReader reader)
Factory Method to allow user derived SAXContentHandler objects to be usedstatic SAXReader
createDefault()
protected org.xml.sax.EntityResolver
createDefaultEntityResolver(java.lang.String systemId)
protected org.xml.sax.XMLReader
createXMLReader()
Factory Method to allow alternate methods of creating and configuring XMLReader objectsprotected org.dom4j.io.DispatchHandler
getDispatchHandler()
DocumentFactory
getDocumentFactory()
DOCUMENT ME!java.lang.String
getEncoding()
Returns encoding used for InputSource (null means system default encoding)org.xml.sax.EntityResolver
getEntityResolver()
Returns the current entity resolver used to resolve entitiesorg.xml.sax.ErrorHandler
getErrorHandler()
DOCUMENT ME!org.xml.sax.XMLFilter
getXMLFilter()
Returns the SAX filter being used to filter SAX events.org.xml.sax.XMLReader
getXMLReader()
DOCUMENT ME!protected org.xml.sax.XMLReader
installXMLFilter(org.xml.sax.XMLReader reader)
Installs any XMLFilter objects required to allow the SAX event stream to be filtered and preprocessed before it gets to dom4j.boolean
isIgnoreComments()
Returns whether we should ignore comments or not.boolean
isIncludeExternalDTDDeclarations()
DOCUMENT ME!boolean
isIncludeInternalDTDDeclarations()
DOCUMENT ME!boolean
isMergeAdjacentText()
Returns whether adjacent text nodes should be merged together.boolean
isStringInternEnabled()
Sets whether String interning is enabled or disabled for element & attribute names and namespace URIs.boolean
isStripWhitespaceText()
Sets whether whitespace between element start and end tags should be ignoredboolean
isValidating()
DOCUMENT ME!Document
read(java.io.File file)
Reads a Document from the givenFile
Document
read(java.io.InputStream in)
Reads a Document from the given stream using SAXDocument
read(java.io.InputStream in, java.lang.String systemId)
Reads a Document from the given stream using SAXDocument
read(java.io.Reader reader)
Reads a Document from the givenReader
using SAXDocument
read(java.io.Reader reader, java.lang.String systemId)
Reads a Document from the givenReader
using SAXDocument
read(java.lang.String systemId)
Reads a Document from the given URL or filename using SAX.Document
read(java.net.URL url)
Reads a Document from the givenURL
using SAXDocument
read(org.xml.sax.InputSource in)
Reads a Document from the givenInputSource
using SAXvoid
removeHandler(java.lang.String path)
Removes theElementHandler
from the event based processor, for the specified path.void
resetHandlers()
This method clears out all the existing handlers and default handler setting things back as if no handler existed.void
setDefaultHandler(ElementHandler handler)
When multipleElementHandler
instances have been registered, this will set a defaultElementHandler
to be called for any path which does NOT have a handler registered.protected void
setDispatchHandler(org.dom4j.io.DispatchHandler dispatchHandler)
void
setDocumentFactory(DocumentFactory documentFactory)
This sets theDocumentFactory
used to create new documents.void
setEncoding(java.lang.String encoding)
Sets encoding used for InputSource (null means system default encoding)void
setEntityResolver(org.xml.sax.EntityResolver entityResolver)
Sets the entity resolver used to resolve entities.void
setErrorHandler(org.xml.sax.ErrorHandler errorHandler)
Sets theErrorHandler
used by the SAXXMLReader
.void
setFeature(java.lang.String name, boolean value)
Sets a SAX feature on the underlying SAX parser.void
setIgnoreComments(boolean ignoreComments)
Sets whether we should ignore comments or not.void
setIncludeExternalDTDDeclarations(boolean include)
Sets whether DTD external declarations should be expanded into the DocumentType object or not.void
setIncludeInternalDTDDeclarations(boolean include)
Sets whether internal DTD declarations should be expanded into the DocumentType object or not.void
setMergeAdjacentText(boolean mergeAdjacentText)
Sets whether or not adjacent text nodes should be merged together when parsing.void
setProperty(java.lang.String name, java.lang.Object value)
Allows a SAX property to be set on the underlying SAX parser.void
setStringInternEnabled(boolean stringInternEnabled)
Sets whether String interning is enabled or disabled for element & attribute names and namespace URIsvoid
setStripWhitespaceText(boolean stripWhitespaceText)
Sets whether whitespace between element start and end tags should be ignored.void
setValidation(boolean validation)
Sets the validation mode.void
setXMLFilter(org.xml.sax.XMLFilter filter)
Sets the SAX filter to be used when filtering SAX eventsvoid
setXMLReader(org.xml.sax.XMLReader reader)
Sets theXMLReader
used to parse SAX eventsvoid
setXMLReaderClassName(java.lang.String xmlReaderClassName)
Sets the class name of theXMLReader
to be used to parse SAX events.
-
-
-
Constructor Detail
-
SAXReader
public SAXReader()
This method internally callsSAXParserFactory
.newInstance().newSAXParser().getXMLReader()
orXMLReaderFactory.createXMLReader()
. Be sure to configure returned reader if the default configuration does not suit you. Consider setting the following properties:reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); reader.setFeature("http://xml.org/sax/features/external-general-entities", false); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
-
SAXReader
public SAXReader(boolean validating)
This method internally callsSAXParserFactory
.newInstance().newSAXParser().getXMLReader()
orXMLReaderFactory.createXMLReader()
. Be sure to configure returned reader if the default configuration does not suit you. Consider setting the following properties:reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); reader.setFeature("http://xml.org/sax/features/external-general-entities", false); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
- Parameters:
validating
-
-
SAXReader
public SAXReader(DocumentFactory factory)
This method internally callsSAXParserFactory
.newInstance().newSAXParser().getXMLReader()
orXMLReaderFactory.createXMLReader()
. Be sure to configure returned reader if the default configuration does not suit you. Consider setting the following properties:reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); reader.setFeature("http://xml.org/sax/features/external-general-entities", false); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
- Parameters:
factory
-
-
SAXReader
public SAXReader(DocumentFactory factory, boolean validating)
This method internally callsSAXParserFactory
.newInstance().newSAXParser().getXMLReader()
orXMLReaderFactory.createXMLReader()
. Be sure to configure returned reader if the default configuration does not suit you. Consider setting the following properties:reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); reader.setFeature("http://xml.org/sax/features/external-general-entities", false); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
- Parameters:
factory
-validating
-
-
SAXReader
public SAXReader(org.xml.sax.XMLReader xmlReader)
-
SAXReader
public SAXReader(org.xml.sax.XMLReader xmlReader, boolean validating)
-
SAXReader
public SAXReader(java.lang.String xmlReaderClassName) throws org.xml.sax.SAXException
- Throws:
org.xml.sax.SAXException
-
SAXReader
public SAXReader(java.lang.String xmlReaderClassName, boolean validating) throws org.xml.sax.SAXException
- Throws:
org.xml.sax.SAXException
-
-
Method Detail
-
createDefault
public static SAXReader createDefault()
-
setProperty
public void setProperty(java.lang.String name, java.lang.Object value) throws org.xml.sax.SAXException
Allows a SAX property to be set on the underlying SAX parser. This can be useful to set parser-specific properties such as the location of schema or DTD resources. Though use this method with caution as it has the possibility of breaking the standard behaviour. An alternative to calling this method is to correctly configure an XMLReader object instance and call thesetXMLReader(XMLReader)
method- Parameters:
name
- is the SAX property namevalue
- is the value of the SAX property- Throws:
org.xml.sax.SAXException
- if the XMLReader could not be created or the property could not be changed.
-
setFeature
public void setFeature(java.lang.String name, boolean value) throws org.xml.sax.SAXException
Sets a SAX feature on the underlying SAX parser. This can be useful to set parser-specific features. Though use this method with caution as it has the possibility of breaking the standard behaviour. An alternative to calling this method is to correctly configure an XMLReader object instance and call thesetXMLReader(XMLReader)
method- Parameters:
name
- is the SAX feature namevalue
- is the value of the SAX feature- Throws:
org.xml.sax.SAXException
- if the XMLReader could not be created or the feature could not be changed.
-
read
public Document read(java.io.File file) throws DocumentException
Reads a Document from the given
File
- Parameters:
file
- is theFile
to read from.- Returns:
- the newly created Document instance
- Throws:
DocumentException
- if an error occurs during parsing.
-
read
public Document read(java.net.URL url) throws DocumentException
Reads a Document from the given
URL
using SAX- Parameters:
url
-URL
to read from.- Returns:
- the newly created Document instance
- Throws:
DocumentException
- if an error occurs during parsing.
-
read
public Document read(java.lang.String systemId) throws DocumentException
Reads a Document from the given URL or filename using SAX.
If the systemId contains a
':'
character then it is assumed to be a URL otherwise its assumed to be a file name. If you want finer grained control over this mechansim then please explicitly pass in either aURL
or aFile
instance instead of aString
to denote the source of the document.- Parameters:
systemId
- is a URL for a document or a file name.- Returns:
- the newly created Document instance
- Throws:
DocumentException
- if an error occurs during parsing.
-
read
public Document read(java.io.InputStream in) throws DocumentException
Reads a Document from the given stream using SAX
- Parameters:
in
-InputStream
to read from.- Returns:
- the newly created Document instance
- Throws:
DocumentException
- if an error occurs during parsing.
-
read
public Document read(java.io.Reader reader) throws DocumentException
Reads a Document from the givenReader
using SAX- Parameters:
reader
- is the reader for the input- Returns:
- the newly created Document instance
- Throws:
DocumentException
- if an error occurs during parsing.
-
read
public Document read(java.io.InputStream in, java.lang.String systemId) throws DocumentException
Reads a Document from the given stream using SAX
- Parameters:
in
-InputStream
to read from.systemId
- is the URI for the input- Returns:
- the newly created Document instance
- Throws:
DocumentException
- if an error occurs during parsing.
-
read
public Document read(java.io.Reader reader, java.lang.String systemId) throws DocumentException
Reads a Document from the given
Reader
using SAX- Parameters:
reader
- is the reader for the inputsystemId
- is the URI for the input- Returns:
- the newly created Document instance
- Throws:
DocumentException
- if an error occurs during parsing.
-
read
public Document read(org.xml.sax.InputSource in) throws DocumentException
Reads a Document from the given
InputSource
using SAX- Parameters:
in
-InputSource
to read from.- Returns:
- the newly created Document instance
- Throws:
DocumentException
- if an error occurs during parsing.
-
isValidating
public boolean isValidating()
DOCUMENT ME!- Returns:
- the validation mode, true if validating will be done otherwise false.
-
setValidation
public void setValidation(boolean validation)
Sets the validation mode.- Parameters:
validation
- indicates whether or not validation should occur.
-
isIncludeInternalDTDDeclarations
public boolean isIncludeInternalDTDDeclarations()
DOCUMENT ME!- Returns:
- whether internal DTD declarations should be expanded into the DocumentType object or not.
-
setIncludeInternalDTDDeclarations
public void setIncludeInternalDTDDeclarations(boolean include)
Sets whether internal DTD declarations should be expanded into the DocumentType object or not.- Parameters:
include
- whether or not DTD declarations should be expanded and included into the DocumentType object.
-
isIncludeExternalDTDDeclarations
public boolean isIncludeExternalDTDDeclarations()
DOCUMENT ME!- Returns:
- whether external DTD declarations should be expanded into the DocumentType object or not.
-
setIncludeExternalDTDDeclarations
public void setIncludeExternalDTDDeclarations(boolean include)
Sets whether DTD external declarations should be expanded into the DocumentType object or not.- Parameters:
include
- whether or not DTD declarations should be expanded and included into the DocumentType object.
-
isStringInternEnabled
public boolean isStringInternEnabled()
Sets whether String interning is enabled or disabled for element & attribute names and namespace URIs. This proprety is enabled by default.- Returns:
- DOCUMENT ME!
-
setStringInternEnabled
public void setStringInternEnabled(boolean stringInternEnabled)
Sets whether String interning is enabled or disabled for element & attribute names and namespace URIs- Parameters:
stringInternEnabled
- DOCUMENT ME!
-
isMergeAdjacentText
public boolean isMergeAdjacentText()
Returns whether adjacent text nodes should be merged together.- Returns:
- Value of property mergeAdjacentText.
-
setMergeAdjacentText
public void setMergeAdjacentText(boolean mergeAdjacentText)
Sets whether or not adjacent text nodes should be merged together when parsing.- Parameters:
mergeAdjacentText
- New value of property mergeAdjacentText.
-
isStripWhitespaceText
public boolean isStripWhitespaceText()
Sets whether whitespace between element start and end tags should be ignored- Returns:
- Value of property stripWhitespaceText.
-
setStripWhitespaceText
public void setStripWhitespaceText(boolean stripWhitespaceText)
Sets whether whitespace between element start and end tags should be ignored.- Parameters:
stripWhitespaceText
- New value of property stripWhitespaceText.
-
isIgnoreComments
public boolean isIgnoreComments()
Returns whether we should ignore comments or not.- Returns:
- boolean
-
setIgnoreComments
public void setIgnoreComments(boolean ignoreComments)
Sets whether we should ignore comments or not.- Parameters:
ignoreComments
- whether we should ignore comments or not.
-
getDocumentFactory
public DocumentFactory getDocumentFactory()
DOCUMENT ME!- Returns:
- the
DocumentFactory
used to create document objects
-
setDocumentFactory
public void setDocumentFactory(DocumentFactory documentFactory)
This sets the
DocumentFactory
used to create new documents. This method allows the building of custom DOM4J tree objects to be implemented easily using a custom derivation ofDocumentFactory
- Parameters:
documentFactory
-DocumentFactory
used to create DOM4J objects
-
getErrorHandler
public org.xml.sax.ErrorHandler getErrorHandler()
DOCUMENT ME!- Returns:
- the
ErrorHandler
used by SAX
-
setErrorHandler
public void setErrorHandler(org.xml.sax.ErrorHandler errorHandler)
Sets theErrorHandler
used by the SAXXMLReader
.- Parameters:
errorHandler
- is theErrorHandler
used by SAX
-
getEntityResolver
public org.xml.sax.EntityResolver getEntityResolver()
Returns the current entity resolver used to resolve entities- Returns:
- DOCUMENT ME!
-
setEntityResolver
public void setEntityResolver(org.xml.sax.EntityResolver entityResolver)
Sets the entity resolver used to resolve entities.- Parameters:
entityResolver
- DOCUMENT ME!
-
getXMLReader
public org.xml.sax.XMLReader getXMLReader() throws org.xml.sax.SAXException
DOCUMENT ME!- Returns:
- the
XMLReader
used to parse SAX events - Throws:
org.xml.sax.SAXException
- DOCUMENT ME!
-
setXMLReader
public void setXMLReader(org.xml.sax.XMLReader reader)
Sets theXMLReader
used to parse SAX events- Parameters:
reader
- is theXMLReader
to parse SAX events
-
getEncoding
public java.lang.String getEncoding()
Returns encoding used for InputSource (null means system default encoding)- Returns:
- encoding used for InputSource
-
setEncoding
public void setEncoding(java.lang.String encoding)
Sets encoding used for InputSource (null means system default encoding)- Parameters:
encoding
- is encoding used for InputSource
-
setXMLReaderClassName
public void setXMLReaderClassName(java.lang.String xmlReaderClassName) throws org.xml.sax.SAXException
Sets the class name of theXMLReader
to be used to parse SAX events.- Parameters:
xmlReaderClassName
- is the class name of theXMLReader
to parse SAX events- Throws:
org.xml.sax.SAXException
- DOCUMENT ME!
-
addHandler
public void addHandler(java.lang.String path, ElementHandler handler)
Adds theElementHandler
to be called when the specified path is encounted.- Parameters:
path
- is the path to be handledhandler
- is theElementHandler
to be called by the event based processor.
-
removeHandler
public void removeHandler(java.lang.String path)
Removes theElementHandler
from the event based processor, for the specified path.- Parameters:
path
- is the path to remove theElementHandler
for.
-
setDefaultHandler
public void setDefaultHandler(ElementHandler handler)
When multipleElementHandler
instances have been registered, this will set a defaultElementHandler
to be called for any path which does NOT have a handler registered.- Parameters:
handler
- is theElementHandler
to be called by the event based processor.
-
resetHandlers
public void resetHandlers()
This method clears out all the existing handlers and default handler setting things back as if no handler existed. Useful when reusing an object instance.
-
getXMLFilter
public org.xml.sax.XMLFilter getXMLFilter()
Returns the SAX filter being used to filter SAX events.- Returns:
- the SAX filter being used or null if no SAX filter is installed
-
setXMLFilter
public void setXMLFilter(org.xml.sax.XMLFilter filter)
Sets the SAX filter to be used when filtering SAX events- Parameters:
filter
- is the SAX filter to use or null to disable filtering
-
installXMLFilter
protected org.xml.sax.XMLReader installXMLFilter(org.xml.sax.XMLReader reader)
Installs any XMLFilter objects required to allow the SAX event stream to be filtered and preprocessed before it gets to dom4j.- Parameters:
reader
- DOCUMENT ME!- Returns:
- the new XMLFilter if applicable or the original XMLReader if no filter is being used.
-
getDispatchHandler
protected org.dom4j.io.DispatchHandler getDispatchHandler()
-
setDispatchHandler
protected void setDispatchHandler(org.dom4j.io.DispatchHandler dispatchHandler)
-
createXMLReader
protected org.xml.sax.XMLReader createXMLReader() throws org.xml.sax.SAXException
Factory Method to allow alternate methods of creating and configuring XMLReader objects- Returns:
- DOCUMENT ME!
- Throws:
org.xml.sax.SAXException
- DOCUMENT ME!
-
configureReader
protected void configureReader(org.xml.sax.XMLReader reader, org.xml.sax.helpers.DefaultHandler handler) throws DocumentException
Configures the XMLReader before use- Parameters:
reader
- DOCUMENT ME!handler
- DOCUMENT ME!- Throws:
DocumentException
- DOCUMENT ME!
-
createContentHandler
protected SAXContentHandler createContentHandler(org.xml.sax.XMLReader reader)
Factory Method to allow user derived SAXContentHandler objects to be used- Parameters:
reader
- DOCUMENT ME!- Returns:
- DOCUMENT ME!
-
createDefaultEntityResolver
protected org.xml.sax.EntityResolver createDefaultEntityResolver(java.lang.String systemId)
-
-