Xerces 2.0.0.alpha

org.apache.xerces.parsers
Class DOMParser

java.lang.Object
  |
  +--org.apache.xerces.parsers.XMLParser
        |
        +--org.apache.xerces.parsers.XMLDocumentParser
              |
              +--org.apache.xerces.parsers.DOMParser
All Implemented Interfaces:
org.apache.xerces.xni.XMLComponentManager, org.apache.xerces.xni.XMLDocumentHandler, org.apache.xerces.xni.XMLDTDContentModelHandler, org.apache.xerces.xni.XMLDTDHandler

public class DOMParser
extends XMLDocumentParser

A parser configuration that builds a W3C DOM tree structure from a parse stream. This class implements the XNI callback methods to create the DOM tree. After a successful parse of an XML document, the DOM Document object can be queried using the getDocument method.

Version:
$Id: DOMParser.java,v 1.19.2.8 2000/10/22 22:02:57 andyc Exp $

Field Summary
protected  Node fCurrentNode
          Current node.
protected  Document fDocument
          The document.
protected  boolean fInCDATASection
          True if inside CDATA section.
protected  boolean fInDocument
          True if inside document.
protected  boolean fInDTD
          True if inside DTD.
 
Fields inherited from class org.apache.xerces.parsers.XMLDocumentParser
fDatatypeValidatorFactory, fDTDScanner, fGrammarPool, fParseInProgress, fScanner, fValidator
 
Fields inherited from class org.apache.xerces.parsers.XMLParser
fEntityManager, fErrorReporter, fFeatures, fLocator, fProperties, fSymbolTable
 
Fields inherited from interface org.apache.xerces.xni.XMLDTDHandler
CONDITIONAL_IGNORE, CONDITIONAL_INCLUDE
 
Fields inherited from interface org.apache.xerces.xni.XMLDTDContentModelHandler
OCCURS_ONE_OR_MORE, OCCURS_ZERO_OR_MORE, OCCURS_ZERO_OR_ONE, SEPARATOR_CHOICE, SEPARATOR_SEQUENCE, TYPE_ANY, TYPE_CHILDREN, TYPE_EMPTY, TYPE_MIXED
 
Constructor Summary
  DOMParser()
          Default constructor.
protected DOMParser(org.apache.xerces.util.SymbolTable symbolTable, org.apache.xerces.impl.validation.GrammarPool grammarPool)
           
 
Method Summary
protected  int buildAttrEntityRefs(Text text, org.apache.xerces.xni.XMLAttributes attributes, int attrIndex, int entityCount, int entityIndex, int textOffset)
          Builds entity references in attribute values.
 void characters(org.apache.xerces.xni.XMLString text)
          Character content.
 void comment(org.apache.xerces.xni.XMLString text)
          A comment.
 void doctypeDecl(java.lang.String rootElement, java.lang.String publicId, java.lang.String systemId)
          Notifies of the presence of the DOCTYPE line in the document.
 void endCDATA()
          The end of a CDATA section.
 void endDocument()
          The end of the document.
 void endDTD()
          The end of the DTD.
 void endElement(org.apache.xerces.xni.QName element)
          The end of an element.
 void endEntity(java.lang.String name)
          This method notifies the end of an entity.
 void endPrefixMapping(java.lang.String prefix)
          The end of a namespace prefix mapping.
 Document getDocument()
          Returns the DOM document object.
 void ignorableWhitespace(org.apache.xerces.xni.XMLString text)
          Ignorable whitespace.
 void processingInstruction(java.lang.String target, org.apache.xerces.xni.XMLString data)
          A processing instruction.
 void reset()
          Resets the parser state.
 void startCDATA()
          The start of a CDATA section.
 void startDocument()
          The start of the document.
 void startDTD()
          The start of the DTD.
 void startElement(org.apache.xerces.xni.QName element, org.apache.xerces.xni.XMLAttributes attributes)
          The start of an element.
 void startEntity(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String encoding)
          This method notifies of the start of an entity.
 
Methods inherited from class org.apache.xerces.parsers.XMLDocumentParser
attributeDecl, checkFeature, checkProperty, childrenElement, childrenEndGroup, childrenOccurrence, childrenSeparator, childrenStartGroup, elementDecl, endAttlist, endConditional, endContentModel, externalEntityDecl, internalEntityDecl, mixedElement, notationDecl, parse, setFeature, setProperty, startAttlist, startConditional, startContentModel, startPrefixMapping, textDecl, unparsedEntityDecl, xmlDecl
 
Methods inherited from class org.apache.xerces.parsers.XMLParser
getEntityResolver, getErrorHandler, getFeature, getProperty, parse, setEntityResolver, setErrorHandler, setLocale
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

fDocument

protected Document fDocument
The document.

fCurrentNode

protected Node fCurrentNode
Current node.

fInDocument

protected boolean fInDocument
True if inside document.

fInDTD

protected boolean fInDTD
True if inside DTD.

fInCDATASection

protected boolean fInCDATASection
True if inside CDATA section.
Constructor Detail

DOMParser

public DOMParser()
Default constructor.

DOMParser

protected DOMParser(org.apache.xerces.util.SymbolTable symbolTable,
                    org.apache.xerces.impl.validation.GrammarPool grammarPool)
Parameters:
symbolTable -  
grammarPool -  
Method Detail

getDocument

public Document getDocument()
Returns the DOM document object.

reset

public void reset()
           throws SAXException
Resets the parser state.
Overrides:
reset in class XMLDocumentParser
Throws:
SAXException - Thrown on initialization error.

startEntity

public void startEntity(java.lang.String name,
                        java.lang.String publicId,
                        java.lang.String systemId,
                        java.lang.String encoding)
                 throws SAXException
This method notifies of the start of an entity. The document entity has the pseudo-name of "[xml]"; The DTD has the pseudo-name of "[dtd]; parameter entity names start with '%'; and general entity names are just the entity name.

Note: Since the document is an entity, the handler will be notified of the start of the document entity by calling the startEntity method with the entity name "[xml]" before calling the startDocument method. When exposing entity boundaries through the SAX API, the document entity is never reported, however.

Note: Since the DTD is an entity, the handler will be notified of the start of the DTD entity by calling the startEntity method with the entity name "[dtd]" before calling the startDTD method.

Note: This method is not called for entity references appearing as part of attribute values.

Overrides:
startEntity in class XMLDocumentParser
Parameters:
name - The name of the entity.
publicId - The public identifier of the entity if the entity is external, null otherwise.
systemId - The system identifier of the entity if the entity is external, null otherwise.
encoding - The auto-detected IANA encoding name of the entity stream. This value will be null in those situations where the entity encoding is not auto-detected (e.g. internal parameter entities).
Throws:
SAXException - Thrown by handler to signal an error.

comment

public void comment(org.apache.xerces.xni.XMLString text)
             throws SAXException
A comment.
Overrides:
comment in class XMLDocumentParser
Parameters:
text - The text in the comment.
Throws:
SAXException - Thrown by application to signal an error.

processingInstruction

public void processingInstruction(java.lang.String target,
                                  org.apache.xerces.xni.XMLString data)
                           throws SAXException
A processing instruction. Processing instructions consist of a target name and, optionally, text data. The data is only meaningful to the application.

Typically, a processing instruction's data will contain a series of pseudo-attributes. These pseudo-attributes follow the form of element attributes but are not parsed or presented to the application as anything other than text. The application is responsible for parsing the data.

Overrides:
processingInstruction in class XMLDocumentParser
Parameters:
target - The target.
data - The data or null if none specified.
Throws:
SAXException - Thrown by handler to signal an error.

startDocument

public void startDocument()
                   throws SAXException
The start of the document.
Overrides:
startDocument in class XMLDocumentParser
Throws:
SAXException - Thrown by handler to signal an error.

doctypeDecl

public void doctypeDecl(java.lang.String rootElement,
                        java.lang.String publicId,
                        java.lang.String systemId)
                 throws SAXException
Notifies of the presence of the DOCTYPE line in the document.
Overrides:
doctypeDecl in class XMLDocumentParser
Parameters:
rootElement - The name of the root element.
publicId - The public identifier if an external DTD or null if the external DTD is specified using SYSTEM.
systemId - The system identifier if an external DTD, null otherwise.
Throws:
SAXException - Thrown by handler to signal an error.

startElement

public void startElement(org.apache.xerces.xni.QName element,
                         org.apache.xerces.xni.XMLAttributes attributes)
                  throws SAXException
The start of an element. If the document specifies the start element by using an empty tag, then the startElement method will immediately be followed by the endElement method, with no intervening methods.
Overrides:
startElement in class XMLDocumentParser
Parameters:
element - The name of the element.
attributes - The element attributes.
Throws:
SAXException - Thrown by handler to signal an error.

characters

public void characters(org.apache.xerces.xni.XMLString text)
                throws SAXException
Character content.
Overrides:
characters in class XMLDocumentParser
Parameters:
text - The content.
Throws:
SAXException - Thrown by handler to signal an error.

ignorableWhitespace

public void ignorableWhitespace(org.apache.xerces.xni.XMLString text)
                         throws SAXException
Ignorable whitespace. For this method to be called, the document source must have some way of determining that the text containing only whitespace characters should be considered ignorable. For example, the validator can determine if a length of whitespace characters in the document are ignorable based on the element content model.
Overrides:
ignorableWhitespace in class XMLDocumentParser
Parameters:
text - The ignorable whitespace.
Throws:
SAXException - Thrown by handler to signal an error.

endElement

public void endElement(org.apache.xerces.xni.QName element)
                throws SAXException
The end of an element.
Overrides:
endElement in class XMLDocumentParser
Parameters:
element - The name of the element.
Throws:
SAXException - Thrown by handler to signal an error.

endPrefixMapping

public void endPrefixMapping(java.lang.String prefix)
                      throws SAXException
The end of a namespace prefix mapping. This method will only be called when namespace processing is enabled.
Overrides:
endPrefixMapping in class XMLDocumentParser
Parameters:
prefix - The namespace prefix.
Throws:
SAXException - Thrown by handler to signal an error.

startCDATA

public void startCDATA()
                throws SAXException
The start of a CDATA section.
Overrides:
startCDATA in class XMLDocumentParser
Throws:
SAXException - Thrown by handler to signal an error.

endCDATA

public void endCDATA()
              throws SAXException
The end of a CDATA section.
Overrides:
endCDATA in class XMLDocumentParser
Throws:
SAXException - Thrown by handler to signal an error.

endDocument

public void endDocument()
                 throws SAXException
The end of the document.
Overrides:
endDocument in class XMLDocumentParser
Throws:
SAXException - Thrown by handler to signal an error.

endEntity

public void endEntity(java.lang.String name)
               throws SAXException
This method notifies the end of an entity. The document entity has the pseudo-name of "[xml]"; the DTD has the pseudo-name of "[dtd]; parameter entity names start with '%'; and general entity names are just the entity name.

Note: Since the document is an entity, the handler will be notified of the end of the document entity by calling the endEntity method with the entity name "[xml]" after calling the endDocument method. When exposing entity boundaries through the SAX API, the document entity is never reported, however.

Note: Since the DTD is an entity, the handler will be notified of the end of the DTD entity by calling the endEntity method with the entity name "[dtd]" after calling the endDTD method.

Note: This method is not called for entity references appearing as part of attribute values.

Overrides:
endEntity in class XMLDocumentParser
Parameters:
name - The name of the entity.
Throws:
SAXException - Thrown by handler to signal an error.

startDTD

public void startDTD()
              throws SAXException
The start of the DTD.
Overrides:
startDTD in class XMLDocumentParser
Throws:
SAXException - Thrown by handler to signal an error.

endDTD

public void endDTD()
            throws SAXException
The end of the DTD.
Overrides:
endDTD in class XMLDocumentParser
Throws:
SAXException - Thrown by handler to signal an error.

buildAttrEntityRefs

protected int buildAttrEntityRefs(Text text,
                                  org.apache.xerces.xni.XMLAttributes attributes,
                                  int attrIndex,
                                  int entityCount,
                                  int entityIndex,
                                  int textOffset)
Builds entity references in attribute values. This method is recursive because entity references can contain entity references.
Parameters:
text - The text node that needs to be split.
attributes - The attribute information.
attrIndex - The attribute index.
entityCount - The number of entities. This is passed as a convenience so that this method doesn't have to call XMLAttributes#getEntityCount. The caller already has the entity count so it's kind of a waste to make each invocation of this method query it again.
entityIndex - The entity index that this method invocation should start building from.
textOffset - The offset at which the start of this text should be considered. We need this to adjust the offset since the characters in the current text string are indexed from zero.
Returns:
Returns the number of entities built by this method.

Xerces 2.0.0.alpha