org.dom4j.io
Class SAXContentHandler

java.lang.Object
  extended byorg.xml.sax.helpers.DefaultHandler
      extended byorg.dom4j.io.SAXContentHandler
All Implemented Interfaces:
ContentHandler, DeclHandler, DTDHandler, EntityResolver, ErrorHandler, LexicalHandler

public class SAXContentHandler
extends DefaultHandler
implements LexicalHandler, DeclHandler, DTDHandler

SAXContentHandler builds a dom4j tree via SAX events.

Version:
$Revision: 1.61 $
Author:
James Strachan

Constructor Summary
SAXContentHandler()
           
SAXContentHandler(DocumentFactory documentFactory)
           
SAXContentHandler(DocumentFactory documentFactory, ElementHandler elementHandler)
           
SAXContentHandler(DocumentFactory documentFactory, ElementHandler elementHandler, org.dom4j.io.ElementStack elementStack)
           
 
Method Summary
protected  void addAttributes(Element element, Attributes attributes)
          Add all the attributes to the given elements
protected  void addDeclaredNamespaces(Element element)
          Add all namespaces declared before the startElement() SAX event to the current element so that they are available to child elements and attributes
protected  void addDTDDeclaration(Object declaration)
          Adds an internal DTD declaration to the list of declarations
protected  void addExternalDTDDeclaration(Object declaration)
          Adds an external DTD declaration to the list of declarations
 void attributeDecl(String eName, String aName, String type, String valueDefault, String val)
          Report an attribute type declaration.
 void characters(char[] ch, int start, int end)
           
 void comment(char[] ch, int start, int end)
           
protected  void completeCurrentTextNode()
          If the current text buffer contains any text then create a new text node with it and add it to the current element
protected  Document createDocument()
          DOCUMENT ME!
protected  org.dom4j.io.ElementStack createElementStack()
           
 void elementDecl(String name, String model)
          Report an element type declaration.
 void endCDATA()
           
 void endDocument()
           
 void endDTD()
           
 void endElement(String namespaceURI, String localName, String qName)
           
 void endEntity(String name)
           
 void endPrefixMapping(String prefix)
           
 void error(SAXParseException exception)
          This method is called when an error is detected during parsing such as a validation error.
 void externalEntityDecl(String name, String publicId, String sysId)
          Report a parsed external entity declaration.
 void fatalError(SAXParseException exception)
          This method is called when a fatal error occurs during parsing.
 Document getDocument()
          DOCUMENT ME!
 org.dom4j.io.ElementStack getElementStack()
           
 EntityResolver getEntityResolver()
           
 InputSource getInputSource()
           
 void internalEntityDecl(String name, String value)
          Report an internal entity declaration.
protected  boolean isIgnorableEntity(String name)
          a Strategy Method to determine if a given entity name is ignorable
 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 isStripWhitespaceText()
          Sets whether whitespace between element start and end tags should be ignored
 void notationDecl(String name, String publicId, String systemId)
          Receive notification of a notation declaration event.
 void processingInstruction(String target, String data)
           
 void setDocumentLocator(Locator documentLocator)
           
 void setElementStack(org.dom4j.io.ElementStack elementStack)
           
 void setEntityResolver(EntityResolver entityResolver)
           
 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 setInputSource(InputSource inputSource)
           
 void setMergeAdjacentText(boolean mergeAdjacentText)
          Sets whether or not adjacent text nodes should be merged together when parsing.
 void setStripWhitespaceText(boolean stripWhitespaceText)
          Sets whether whitespace between element start and end tags should be ignored.
 void startCDATA()
           
 void startDocument()
           
 void startDTD(String name, String publicId, String systemId)
           
 void startElement(String namespaceURI, String localName, String qualifiedName, Attributes attributes)
           
 void startEntity(String name)
           
 void startPrefixMapping(String prefix, String uri)
           
 void unparsedEntityDecl(String name, String publicId, String systemId, String notationName)
          Receive notification of an unparsed entity declaration event.
 void warning(SAXParseException exception)
          This method is called when a warning occurs during the parsing of the document.
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
ignorableWhitespace, resolveEntity, skippedEntity
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SAXContentHandler

public SAXContentHandler()

SAXContentHandler

public SAXContentHandler(DocumentFactory documentFactory)

SAXContentHandler

public SAXContentHandler(DocumentFactory documentFactory,
                         ElementHandler elementHandler)

SAXContentHandler

public SAXContentHandler(DocumentFactory documentFactory,
                         ElementHandler elementHandler,
                         org.dom4j.io.ElementStack elementStack)
Method Detail

getDocument

public Document getDocument()
DOCUMENT ME!

Returns:
the document that has been or is being built

setDocumentLocator

public void setDocumentLocator(Locator documentLocator)
Specified by:
setDocumentLocator in interface ContentHandler

processingInstruction

public void processingInstruction(String target,
                                  String data)
                           throws SAXException
Specified by:
processingInstruction in interface ContentHandler
Throws:
SAXException

startPrefixMapping

public void startPrefixMapping(String prefix,
                               String uri)
                        throws SAXException
Specified by:
startPrefixMapping in interface ContentHandler
Throws:
SAXException

endPrefixMapping

public void endPrefixMapping(String prefix)
                      throws SAXException
Specified by:
endPrefixMapping in interface ContentHandler
Throws:
SAXException

startDocument

public void startDocument()
                   throws SAXException
Specified by:
startDocument in interface ContentHandler
Throws:
SAXException

endDocument

public void endDocument()
                 throws SAXException
Specified by:
endDocument in interface ContentHandler
Throws:
SAXException

startElement

public void startElement(String namespaceURI,
                         String localName,
                         String qualifiedName,
                         Attributes attributes)
                  throws SAXException
Specified by:
startElement in interface ContentHandler
Throws:
SAXException

endElement

public void endElement(String namespaceURI,
                       String localName,
                       String qName)
                throws SAXException
Specified by:
endElement in interface ContentHandler
Throws:
SAXException

characters

public void characters(char[] ch,
                       int start,
                       int end)
                throws SAXException
Specified by:
characters in interface ContentHandler
Throws:
SAXException

warning

public void warning(SAXParseException exception)
             throws SAXException
This method is called when a warning occurs during the parsing of the document. This method does nothing.

Specified by:
warning in interface ErrorHandler
Parameters:
exception - DOCUMENT ME!
Throws:
SAXException - DOCUMENT ME!

error

public void error(SAXParseException exception)
           throws SAXException
This method is called when an error is detected during parsing such as a validation error. This method rethrows the exception

Specified by:
error in interface ErrorHandler
Parameters:
exception - DOCUMENT ME!
Throws:
SAXException - DOCUMENT ME!

fatalError

public void fatalError(SAXParseException exception)
                throws SAXException
This method is called when a fatal error occurs during parsing. This method rethrows the exception

Specified by:
fatalError in interface ErrorHandler
Parameters:
exception - DOCUMENT ME!
Throws:
SAXException - DOCUMENT ME!

startDTD

public void startDTD(String name,
                     String publicId,
                     String systemId)
              throws SAXException
Specified by:
startDTD in interface LexicalHandler
Throws:
SAXException

endDTD

public void endDTD()
            throws SAXException
Specified by:
endDTD in interface LexicalHandler
Throws:
SAXException

startEntity

public void startEntity(String name)
                 throws SAXException
Specified by:
startEntity in interface LexicalHandler
Throws:
SAXException

endEntity

public void endEntity(String name)
               throws SAXException
Specified by:
endEntity in interface LexicalHandler
Throws:
SAXException

startCDATA

public void startCDATA()
                throws SAXException
Specified by:
startCDATA in interface LexicalHandler
Throws:
SAXException

endCDATA

public void endCDATA()
              throws SAXException
Specified by:
endCDATA in interface LexicalHandler
Throws:
SAXException

comment

public void comment(char[] ch,
                    int start,
                    int end)
             throws SAXException
Specified by:
comment in interface LexicalHandler
Throws:
SAXException

elementDecl

public void elementDecl(String name,
                        String model)
                 throws SAXException
Report an element type declaration.

The content model will consist of the string "EMPTY", the string "ANY", or a parenthesised group, optionally followed by an occurrence indicator. The model will be normalized so that all parameter entities are fully resolved and all whitespace is removed,and will include the enclosing parentheses. Other normalization (such as removing redundant parentheses or simplifying occurrence indicators) is at the discretion of the parser.

Specified by:
elementDecl in interface DeclHandler
Parameters:
name - The element type name.
model - The content model as a normalized string.
Throws:
SAXException - The application may raise an exception.

attributeDecl

public void attributeDecl(String eName,
                          String aName,
                          String type,
                          String valueDefault,
                          String val)
                   throws SAXException
Report an attribute type declaration.

Only the effective (first) declaration for an attribute will be reported. The type will be one of the strings "CDATA", "ID", "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", a parenthesized token group with the separator "|" and all whitespace removed, or the word "NOTATION" followed by a space followed by a parenthesized token group with all whitespace removed.

Any parameter entities in the attribute value will be expanded, but general entities will not.

Specified by:
attributeDecl in interface DeclHandler
Parameters:
eName - The name of the associated element.
aName - The name of the attribute.
type - A string representing the attribute type.
valueDefault - A string representing the attribute default ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if none of these applies.
val - A string representing the attribute's default value, or null if there is none.
Throws:
SAXException - The application may raise an exception.

internalEntityDecl

public void internalEntityDecl(String name,
                               String value)
                        throws SAXException
Report an internal entity declaration.

Only the effective (first) declaration for each entity will be reported. All parameter entities in the value will be expanded, but general entities will not.

Specified by:
internalEntityDecl in interface DeclHandler
Parameters:
name - The name of the entity. If it is a parameter entity, the name will begin with '%'.
value - The replacement text of the entity.
Throws:
SAXException - The application may raise an exception.
See Also:
externalEntityDecl(java.lang.String, java.lang.String, java.lang.String), DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

externalEntityDecl

public void externalEntityDecl(String name,
                               String publicId,
                               String sysId)
                        throws SAXException
Report a parsed external entity declaration.

Only the effective (first) declaration for each entity will be reported.

Specified by:
externalEntityDecl in interface DeclHandler
Parameters:
name - The name of the entity. If it is a parameter entity, the name will begin with '%'.
publicId - The declared public identifier of the entity, or null if none was declared.
sysId - The declared system identifier of the entity.
Throws:
SAXException - The application may raise an exception.
See Also:
internalEntityDecl(java.lang.String, java.lang.String), DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

notationDecl

public void notationDecl(String name,
                         String publicId,
                         String systemId)
                  throws SAXException
Receive notification of a notation declaration event.

It is up to the application to record the notation for later reference, if necessary.

At least one of publicId and systemId must be non-null. If a system identifier is present, and it is a URL, the SAX parser must resolve it fully before passing it to the application through this event.

There is no guarantee that the notation declaration will be reported before any unparsed entities that use it.

Specified by:
notationDecl in interface DTDHandler
Parameters:
name - The notation name.
publicId - The notation's public identifier, or null if none was given.
systemId - The notation's system identifier, or null if none was given.
Throws:
SAXException - Any SAX exception, possibly wrapping another exception.
See Also:
unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String), AttributeList

unparsedEntityDecl

public void unparsedEntityDecl(String name,
                               String publicId,
                               String systemId,
                               String notationName)
                        throws SAXException
Receive notification of an unparsed entity declaration event.

Note that the notation name corresponds to a notation reported by the notationDeclevent. It is up to the application to record the entity for later reference, if necessary.

If the system identifier is a URL, the parser must resolve it fully before passing it to the application.

Specified by:
unparsedEntityDecl in interface DTDHandler
Parameters:
name - The unparsed entity's name.
publicId - The entity's public identifier, or null if none was given.
systemId - The entity's system identifier.
notationName - The name of the associated notation.
Throws:
SAXException - Any SAX exception, possibly wrapping another exception.
See Also:
notationDecl(java.lang.String, java.lang.String, java.lang.String), AttributeList

getElementStack

public org.dom4j.io.ElementStack getElementStack()

setElementStack

public void setElementStack(org.dom4j.io.ElementStack elementStack)

getEntityResolver

public EntityResolver getEntityResolver()

setEntityResolver

public void setEntityResolver(EntityResolver entityResolver)

getInputSource

public InputSource getInputSource()

setInputSource

public void setInputSource(InputSource inputSource)

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.

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.

completeCurrentTextNode

protected void completeCurrentTextNode()
If the current text buffer contains any text then create a new text node with it and add it to the current element


createDocument

protected Document createDocument()
DOCUMENT ME!

Returns:
the current document

isIgnorableEntity

protected boolean isIgnorableEntity(String name)
a Strategy Method to determine if a given entity name is ignorable

Parameters:
name - DOCUMENT ME!
Returns:
DOCUMENT ME!

addDeclaredNamespaces

protected void addDeclaredNamespaces(Element element)
Add all namespaces declared before the startElement() SAX event to the current element so that they are available to child elements and attributes

Parameters:
element - DOCUMENT ME!

addAttributes

protected void addAttributes(Element element,
                             Attributes attributes)
Add all the attributes to the given elements

Parameters:
element - DOCUMENT ME!
attributes - DOCUMENT ME!

addDTDDeclaration

protected void addDTDDeclaration(Object declaration)
Adds an internal DTD declaration to the list of declarations

Parameters:
declaration - DOCUMENT ME!

addExternalDTDDeclaration

protected void addExternalDTDDeclaration(Object declaration)
Adds an external DTD declaration to the list of declarations

Parameters:
declaration - DOCUMENT ME!

createElementStack

protected org.dom4j.io.ElementStack createElementStack()


Copyright © 2001-2005 MetaStuff Ltd.. All Rights Reserved.