Top Description Fields Constructors Methods
org.dom4j.io

public Class DOMSAXContentHandler

extends DefaultHandler
implements LexicalHandler
Class Inheritance
All Implemented Interfaces
org.xml.sax.ext.LexicalHandler
Imports
java.lang.reflect.Method, java.util.ArrayList, .HashMap, .List, .Map, org.dom4j.Branch, .Document, .Element, .Namespace, .QName, org.dom4j.dom.DOMAttribute, .DOMCDATA, .DOMComment, .DOMDocumentFactory, .DOMElement, .DOMText, org.dom4j.tree.NamespaceStack, org.w3c.dom.ProcessingInstruction, org.xml.sax.Attributes, .EntityResolver, .InputSource, .Locator, .SAXException, .SAXParseException, org.xml.sax.ext.LexicalHandler, .Locator2, org.xml.sax.helpers.DefaultHandler

SAXContentHandler builds W3C DOM object via SAX events.

Authors
James Strachan , Todd Wolff

Field Summary

Modifier and TypeField and Description
private StringBuffer
cdataText

buffer to hold contents of cdata section across multiple characters events

private Element
currentElement

The current element we are on

private int
declaredNamespaceIndex

The number of namespaces that are declared in the current scope

private Document
document

The document that is being built

private DOMDocumentFactory
documentFactory

The factory used to create new Document instances

private ElementStack
elementStack

stack of Element objects

private EntityResolver
entityResolver

The entity resolver

private boolean
ignoreComments

Should we ignore comments

private InputSource
private boolean
insideCDATASection

Flag used to indicate that we are inside a CDATA section

private Locator
locator

the Locator

private boolean
mergeAdjacentText

Whether adjacent text nodes should be merged

private NamespaceStack
namespaceStack

stack of Namespace and QName objects

private boolean
stripWhitespaceText

Holds value of property stripWhitespaceText.

private StringBuffer
textBuffer

Buffer used to concatenate text together

private boolean
textInTextBuffer

Have we added text to the buffer

Constructor Summary

AccessConstructor and Description
public
public

Method Summary

Modifier and TypeMethod and Description
protected void
addAttributes(Element element, Attributes attributes)

protected void
protected String
public void
characters(char[]
The characters.
ch
,
int
The start position in the character array.
start
,
int
The number of characters to use from the character array.
end
)

Overrides org.xml.sax.helpers.DefaultHandler.characters.

Implements org.xml.sax.ContentHandler.characters.

Receive notification of character data inside an element.
public void
comment(char[]
An array holding the characters in the comment.
ch
,
int
The starting position in the array.
start
,
int
The number of characters to use from the array.
end
)

Implements org.xml.sax.ext.LexicalHandler.comment.

Report an XML comment anywhere in the document.
protected void
protected Document
protected ElementStack
public void
endCDATA()

Implements org.xml.sax.ext.LexicalHandler.endCDATA.

Report the end of a CDATA section.
public void
endDocument()

Overrides org.xml.sax.helpers.DefaultHandler.endDocument.

Implements org.xml.sax.ContentHandler.endDocument.

Receive notification of the end of the document.
public void
endDTD()

Implements org.xml.sax.ext.LexicalHandler.endDTD.

Report the end of DTD declarations.
public void
endElement(String
The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
namespaceURI
,
String
The local name (without prefix), or the empty string if Namespace processing is not being performed.
localName
,
String
The qualified name (with prefix), or the empty string if qualified names are not available.
qName
)

Overrides org.xml.sax.helpers.DefaultHandler.endElement.

Implements org.xml.sax.ContentHandler.endElement.

Receive notification of the end of an element.
public void
endEntity(String
The name of the entity that is ending.
name
)

Implements org.xml.sax.ext.LexicalHandler.endEntity.

Report the end of an entity.
public void
endPrefixMapping(String
The Namespace prefix being declared.
prefix
)

Overrides org.xml.sax.helpers.DefaultHandler.endPrefixMapping.

Implements org.xml.sax.ContentHandler.endPrefixMapping.

Receive notification of the end of a Namespace mapping.
public void
error(SAXParseException
DOCUMENT ME!
exception
)

Overrides org.xml.sax.helpers.DefaultHandler.error.

Implements org.xml.sax.ErrorHandler.error.

This method is called when an error is detected during parsing such as a validation error.
public void
fatalError(SAXParseException
DOCUMENT ME!
exception
)

Overrides org.xml.sax.helpers.DefaultHandler.fatalError.

Implements org.xml.sax.ErrorHandler.fatalError.

This method is called when a fatal error occurs during parsing.
public Document

Returns:

the document that has been or is being built
getDocument
()

Retrieves w3c document object built via generated sax events.

public ElementStack
private String
public EntityResolver
public InputSource
public boolean

Returns:

boolean
isIgnoreComments
()

Returns whether we should ignore comments or not.

public boolean

Returns:

Value of property mergeAdjacentText.
isMergeAdjacentText
()

Returns whether adjacent text nodes should be merged together.

public boolean

Returns:

Value of property stripWhitespaceText.
isStripWhitespaceText
()

Sets whether whitespace between element start and end tags should be ignored

public void
processingInstruction(String
The processing instruction target.
target
,
String
The processing instruction data, or null if none is supplied.
data
)

Overrides org.xml.sax.helpers.DefaultHandler.processingInstruction.

Implements org.xml.sax.ContentHandler.processingInstruction.

Receive notification of a processing instruction.
public void
setDocumentLocator(Locator
A locator for all SAX document events.
documentLocator
)

Overrides org.xml.sax.helpers.DefaultHandler.setDocumentLocator.

Implements org.xml.sax.ContentHandler.setDocumentLocator.

Receive a Locator object for document events.
public void
public void
public void
setIgnoreComments(boolean
whether we should ignore comments or not.
ignoreComments
)

Sets whether we should ignore comments or not.

public void
public void
setMergeAdjacentText(boolean
New value of property mergeAdjacentText.
mergeAdjacentText
)

Sets whether or not adjacent text nodes should be merged together when parsing.

public void
setStripWhitespaceText(boolean
New value of property stripWhitespaceText.
stripWhitespaceText
)

Sets whether whitespace between element start and end tags should be ignored.

public void
startCDATA()

Implements org.xml.sax.ext.LexicalHandler.startCDATA.

Report the start of a CDATA section.
public void
startDocument()

Overrides org.xml.sax.helpers.DefaultHandler.startDocument.

Implements org.xml.sax.ContentHandler.startDocument.

Receive notification of the beginning of the document.
public void
startDTD(String
The document type name.
name
,
String
The declared public identifier for the external DTD subset, or null if none was declared.
publicId
,
String
The declared system identifier for the external DTD subset, or null if none was declared. (Note that this is not resolved against the document base URI.)
systemId
)

Implements org.xml.sax.ext.LexicalHandler.startDTD.

Report the start of DTD declarations, if any.
public void
startElement(String
The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
namespaceURI
,
String
The local name (without prefix), or the empty string if Namespace processing is not being performed.
localName
,
String
The qualified name (with prefix), or the empty string if qualified names are not available.
qualifiedName
,
Attributes
The attributes attached to the element. If there are no attributes, it shall be an empty Attributes object.
attributes
)

Overrides org.xml.sax.helpers.DefaultHandler.startElement.

Implements org.xml.sax.ContentHandler.startElement.

Receive notification of the start of an element.
public void
startEntity(String
The name of the entity. If it is a parameter entity, the name will begin with '%', and if it is the external DTD subset, it will be "[dtd]".
name
)

Implements org.xml.sax.ext.LexicalHandler.startEntity.

Report the beginning of some internal and external XML entities.
public void
startPrefixMapping(String
The Namespace prefix being declared.
prefix
,
String
The Namespace URI mapped to the prefix.
uri
)

Overrides org.xml.sax.helpers.DefaultHandler.startPrefixMapping.

Implements org.xml.sax.ContentHandler.startPrefixMapping.

Receive notification of the start of a Namespace mapping.
public void
warning(SAXParseException
DOCUMENT ME!
exception
)

Overrides org.xml.sax.helpers.DefaultHandler.warning.

Implements org.xml.sax.ErrorHandler.warning.

This method is called when a warning occurs during the parsing of the document.
Inherited from org.xml.sax.helpers.DefaultHandler:
ignorableWhitespacenotationDeclresolveEntityskippedEntityunparsedEntityDecl

Field Detail

cdataTextback to summary
private StringBuffer cdataText

buffer to hold contents of cdata section across multiple characters events

currentElementback to summary
private Element currentElement

The current element we are on

declaredNamespaceIndexback to summary
private int declaredNamespaceIndex

The number of namespaces that are declared in the current scope

documentback to summary
private Document document

The document that is being built

documentFactoryback to summary
private DOMDocumentFactory documentFactory

The factory used to create new Document instances

elementStackback to summary
private ElementStack elementStack

stack of Element objects

entityResolverback to summary
private EntityResolver entityResolver

The entity resolver

ignoreCommentsback to summary
private boolean ignoreComments

Should we ignore comments

inputSourceback to summary
private InputSource inputSource
insideCDATASectionback to summary
private boolean insideCDATASection

Flag used to indicate that we are inside a CDATA section

locatorback to summary
private Locator locator

the Locator

mergeAdjacentTextback to summary
private boolean mergeAdjacentText

Whether adjacent text nodes should be merged

namespaceStackback to summary
private NamespaceStack namespaceStack

stack of Namespace and QName objects

stripWhitespaceTextback to summary
private boolean stripWhitespaceText

Holds value of property stripWhitespaceText.

textBufferback to summary
private StringBuffer textBuffer

Buffer used to concatenate text together

textInTextBufferback to summary
private boolean textInTextBuffer

Have we added text to the buffer

Constructor Detail

DOMSAXContentHandlerback to summary
public DOMSAXContentHandler()
DOMSAXContentHandlerback to summary
public DOMSAXContentHandler(DOMDocumentFactory documentFactory)

Method Detail

addAttributesback to summary
protected void addAttributes(Element element, Attributes attributes)
addDeclaredNamespacesback to summary
protected void addDeclaredNamespaces(Element element)
attributeNameForNamespaceback to summary
protected String attributeNameForNamespace(Namespace namespace)
charactersback to summary
public void characters(char[] ch, int start, int end) throws SAXException

Overrides org.xml.sax.helpers.DefaultHandler.characters.

Implements org.xml.sax.ContentHandler.characters.

Doc from org.xml.sax.helpers.DefaultHandler.characters.

Receive notification of character data inside an element.

By default, do nothing. Application writers may override this method to take specific actions for each chunk of character data (such as adding the data to a node or buffer, or printing it to a file).

Parameters
ch:char[]

The characters.

start:int

The start position in the character array.

end:int

The number of characters to use from the character array.

Exceptions
SAXException:
Any SAX exception, possibly wrapping another exception.
commentback to summary
public void comment(char[] ch, int start, int end) throws SAXException

Implements org.xml.sax.ext.LexicalHandler.comment.

Doc from org.xml.sax.ext.LexicalHandler.comment.

Report an XML comment anywhere in the document.

This callback will be used for comments inside or outside the document element, including comments in the external DTD subset (if read). Comments in the DTD must be properly nested inside start/endDTD and start/endEntity events (if used).

Parameters
ch:char[]

An array holding the characters in the comment.

start:int

The starting position in the array.

end:int

The number of characters to use from the array.

Exceptions
SAXException:
The application may raise an exception.
completeCurrentTextNodeback to summary
protected void completeCurrentTextNode()
createDocumentback to summary
protected Document createDocument()
createElementStackback to summary
protected ElementStack createElementStack()
endCDATAback to summary
public void endCDATA() throws SAXException

Implements org.xml.sax.ext.LexicalHandler.endCDATA.

Doc from org.xml.sax.ext.LexicalHandler.endCDATA.

Report the end of a CDATA section.

Exceptions
SAXException:
The application may raise an exception.
endDocumentback to summary
public void endDocument() throws SAXException

Overrides org.xml.sax.helpers.DefaultHandler.endDocument.

Implements org.xml.sax.ContentHandler.endDocument.

Doc from org.xml.sax.helpers.DefaultHandler.endDocument.

Receive notification of the end of the document.

By default, do nothing. Application writers may override this method in a subclass to take specific actions at the end of a document (such as finalising a tree or closing an output file).

Exceptions
SAXException:
Any SAX exception, possibly wrapping another exception.
endDTDback to summary
public void endDTD() throws SAXException

Implements org.xml.sax.ext.LexicalHandler.endDTD.

Doc from org.xml.sax.ext.LexicalHandler.endDTD.

Report the end of DTD declarations.

This method is intended to report the end of the DOCTYPE declaration; if the document has no DOCTYPE declaration, this method will not be invoked.

Exceptions
SAXException:
The application may raise an exception.
endElementback to summary
public void endElement(String namespaceURI, String localName, String qName) throws SAXException

Overrides org.xml.sax.helpers.DefaultHandler.endElement.

Implements org.xml.sax.ContentHandler.endElement.

Doc from org.xml.sax.helpers.DefaultHandler.endElement.

Receive notification of the end of an element.

By default, do nothing. Application writers may override this method in a subclass to take specific actions at the end of each element (such as finalising a tree node or writing output to a file).

Parameters
namespaceURI:String

The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.

localName:String

The local name (without prefix), or the empty string if Namespace processing is not being performed.

qName:String

The qualified name (with prefix), or the empty string if qualified names are not available.

Exceptions
SAXException:
Any SAX exception, possibly wrapping another exception.
endEntityback to summary
public void endEntity(String name) throws SAXException

Implements org.xml.sax.ext.LexicalHandler.endEntity.

Doc from org.xml.sax.ext.LexicalHandler.endEntity.

Report the end of an entity.

Parameters
name:String

The name of the entity that is ending.

Exceptions
SAXException:
The application may raise an exception.
endPrefixMappingback to summary
public void endPrefixMapping(String prefix) throws SAXException

Overrides org.xml.sax.helpers.DefaultHandler.endPrefixMapping.

Implements org.xml.sax.ContentHandler.endPrefixMapping.

Doc from org.xml.sax.helpers.DefaultHandler.endPrefixMapping.

Receive notification of the end of a Namespace mapping.

By default, do nothing. Application writers may override this method in a subclass to take specific actions at the end of each prefix mapping.

Parameters
prefix:String

The Namespace prefix being declared.

Exceptions
SAXException:
Any SAX exception, possibly wrapping another exception.
errorback to summary
public void error(SAXParseException exception) throws SAXException

Overrides org.xml.sax.helpers.DefaultHandler.error.

Implements org.xml.sax.ErrorHandler.error.

This method is called when an error is detected during parsing such as a validation error. This method rethrows the exception

Parameters
exception:SAXParseException

DOCUMENT ME!

Exceptions
SAXException:
DOCUMENT ME!
fatalErrorback to summary
public void fatalError(SAXParseException exception) throws SAXException

Overrides org.xml.sax.helpers.DefaultHandler.fatalError.

Implements org.xml.sax.ErrorHandler.fatalError.

This method is called when a fatal error occurs during parsing. This method rethrows the exception

Parameters
exception:SAXParseException

DOCUMENT ME!

Exceptions
SAXException:
DOCUMENT ME!
getDocumentback to summary
public Document getDocument()

Retrieves w3c document object built via generated sax events.

Returns:Document

the document that has been or is being built

getElementStackback to summary
public ElementStack getElementStack()
getEncodingback to summary
private String getEncoding()
getEntityResolverback to summary
public EntityResolver getEntityResolver()
getInputSourceback to summary
public InputSource getInputSource()
isIgnoreCommentsback to summary
public boolean isIgnoreComments()

Returns whether we should ignore comments or not.

Returns:boolean

boolean

isMergeAdjacentTextback to summary
public boolean isMergeAdjacentText()

Returns whether adjacent text nodes should be merged together.

Returns:boolean

Value of property mergeAdjacentText.

isStripWhitespaceTextback to summary
public boolean isStripWhitespaceText()

Sets whether whitespace between element start and end tags should be ignored

Returns:boolean

Value of property stripWhitespaceText.

processingInstructionback to summary
public void processingInstruction(String target, String data) throws SAXException

Overrides org.xml.sax.helpers.DefaultHandler.processingInstruction.

Implements org.xml.sax.ContentHandler.processingInstruction.

Doc from org.xml.sax.helpers.DefaultHandler.processingInstruction.

Receive notification of a processing instruction.

By default, do nothing. Application writers may override this method in a subclass to take specific actions for each processing instruction, such as setting status variables or invoking other methods.

Parameters
target:String

The processing instruction target.

data:String

The processing instruction data, or null if none is supplied.

Exceptions
SAXException:
Any SAX exception, possibly wrapping another exception.
setDocumentLocatorback to summary
public void setDocumentLocator(Locator documentLocator)

Overrides org.xml.sax.helpers.DefaultHandler.setDocumentLocator.

Implements org.xml.sax.ContentHandler.setDocumentLocator.

Doc from org.xml.sax.helpers.DefaultHandler.setDocumentLocator.

Receive a Locator object for document events.

By default, do nothing. Application writers may override this method in a subclass if they wish to store the locator for use with other document events.

Parameters
documentLocator:Locator

A locator for all SAX document events.

setElementStackback to summary
public void setElementStack(ElementStack elementStack)
setEntityResolverback to summary
public void setEntityResolver(EntityResolver entityResolver)
setIgnoreCommentsback to summary
public void setIgnoreComments(boolean ignoreComments)

Sets whether we should ignore comments or not.

Parameters
ignoreComments:boolean

whether we should ignore comments or not.

setInputSourceback to summary
public void setInputSource(InputSource inputSource)
setMergeAdjacentTextback to summary
public void setMergeAdjacentText(boolean mergeAdjacentText)

Sets whether or not adjacent text nodes should be merged together when parsing.

Parameters
mergeAdjacentText:boolean

New value of property mergeAdjacentText.

setStripWhitespaceTextback to summary
public void setStripWhitespaceText(boolean stripWhitespaceText)

Sets whether whitespace between element start and end tags should be ignored.

Parameters
stripWhitespaceText:boolean

New value of property stripWhitespaceText.

startCDATAback to summary
public void startCDATA() throws SAXException

Implements org.xml.sax.ext.LexicalHandler.startCDATA.

Doc from org.xml.sax.ext.LexicalHandler.startCDATA.

Report the start of a CDATA section.

The contents of the CDATA section will be reported through the regular characters event; this event is intended only to report the boundary.

Exceptions
SAXException:
The application may raise an exception.
startDocumentback to summary
public void startDocument() throws SAXException

Overrides org.xml.sax.helpers.DefaultHandler.startDocument.

Implements org.xml.sax.ContentHandler.startDocument.

Doc from org.xml.sax.helpers.DefaultHandler.startDocument.

Receive notification of the beginning of the document.

By default, do nothing. Application writers may override this method in a subclass to take specific actions at the beginning of a document (such as allocating the root node of a tree or creating an output file).

Exceptions
SAXException:
Any SAX exception, possibly wrapping another exception.
startDTDback to summary
public void startDTD(String name, String publicId, String systemId) throws SAXException

Implements org.xml.sax.ext.LexicalHandler.startDTD.

Doc from org.xml.sax.ext.LexicalHandler.startDTD.

Report the start of DTD declarations, if any.

This method is intended to report the beginning of the DOCTYPE declaration; if the document has no DOCTYPE declaration, this method will not be invoked.

All declarations reported through DTDHandler or DeclHandler events must appear between the startDTD and endDTD events. Declarations are assumed to belong to the internal DTD subset unless they appear between startEntity and endEntity events. Comments and processing instructions from the DTD should also be reported between the startDTD and endDTD events, in their original order of (logical) occurrence; they are not required to appear in their correct locations relative to DTDHandler or DeclHandler events, however.

Note that the start/endDTD events will appear within the start/endDocument events from ContentHandler and before the first startElement event.

Parameters
name:String

The document type name.

publicId:String

The declared public identifier for the external DTD subset, or null if none was declared.

systemId:String

The declared system identifier for the external DTD subset, or null if none was declared. (Note that this is not resolved against the document base URI.)

Exceptions
SAXException:
The application may raise an exception.
startElementback to summary
public void startElement(String namespaceURI, String localName, String qualifiedName, Attributes attributes) throws SAXException

Overrides org.xml.sax.helpers.DefaultHandler.startElement.

Implements org.xml.sax.ContentHandler.startElement.

Doc from org.xml.sax.helpers.DefaultHandler.startElement.

Receive notification of the start of an element.

By default, do nothing. Application writers may override this method in a subclass to take specific actions at the start of each element (such as allocating a new tree node or writing output to a file).

Parameters
namespaceURI:String

The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.

localName:String

The local name (without prefix), or the empty string if Namespace processing is not being performed.

qualifiedName:String

The qualified name (with prefix), or the empty string if qualified names are not available.

attributes:Attributes

The attributes attached to the element. If there are no attributes, it shall be an empty Attributes object.

Exceptions
SAXException:
Any SAX exception, possibly wrapping another exception.
startEntityback to summary
public void startEntity(String name) throws SAXException

Implements org.xml.sax.ext.LexicalHandler.startEntity.

Doc from org.xml.sax.ext.LexicalHandler.startEntity.

Report the beginning of some internal and external XML entities.

The reporting of parameter entities (including the external DTD subset) is optional, and SAX2 drivers that report LexicalHandler events may not implement it; you can use the http://xml.org/sax/features/lexical-handler/parameter-entities feature to query or control the reporting of parameter entities.

General entities are reported with their regular names, parameter entities have '%' prepended to their names, and the external DTD subset has the pseudo-entity name "[dtd]".

When a SAX2 driver is providing these events, all other events must be properly nested within start/end entity events. There is no additional requirement that events from DeclHandler or DTDHandler be properly ordered.

Note that skipped entities will be reported through the skippedEntity event, which is part of the ContentHandler interface.

Because of the streaming event model that SAX uses, some entity boundaries cannot be reported under any circumstances:

  • general entities within attribute values
  • parameter entities within declarations

These will be silently expanded, with no indication of where the original entity boundaries were.

Note also that the boundaries of character references (which are not really entities anyway) are not reported.

All start/endEntity events must be properly nested.

Parameters
name:String

The name of the entity. If it is a parameter entity, the name will begin with '%', and if it is the external DTD subset, it will be "[dtd]".

Exceptions
SAXException:
The application may raise an exception.
startPrefixMappingback to summary
public void startPrefixMapping(String prefix, String uri) throws SAXException

Overrides org.xml.sax.helpers.DefaultHandler.startPrefixMapping.

Implements org.xml.sax.ContentHandler.startPrefixMapping.

Doc from org.xml.sax.helpers.DefaultHandler.startPrefixMapping.

Receive notification of the start of a Namespace mapping.

By default, do nothing. Application writers may override this method in a subclass to take specific actions at the start of each Namespace prefix scope (such as storing the prefix mapping).

Parameters
prefix:String

The Namespace prefix being declared.

uri:String

The Namespace URI mapped to the prefix.

Exceptions
SAXException:
Any SAX exception, possibly wrapping another exception.
warningback to summary
public void warning(SAXParseException exception) throws SAXException

Overrides org.xml.sax.helpers.DefaultHandler.warning.

Implements org.xml.sax.ErrorHandler.warning.

This method is called when a warning occurs during the parsing of the document. This method does nothing.

Parameters
exception:SAXParseException

DOCUMENT ME!

Exceptions
SAXException:
DOCUMENT ME!