org.apache.xerces.parsers
Class DOMParserImpl

java.lang.Object
  extended by org.apache.xerces.parsers.XMLParser
      extended by org.apache.xerces.parsers.AbstractXMLDocumentParser
          extended by org.apache.xerces.parsers.AbstractDOMParser
              extended by org.apache.xerces.parsers.DOMParserImpl
All Implemented Interfaces:
XMLDocumentHandler, XMLDTDContentModelHandler, XMLDTDHandler, DOMConfiguration, LSParser
Direct Known Subclasses:
DOMASBuilderImpl

public class DOMParserImpl
extends AbstractDOMParser
implements LSParser, DOMConfiguration

This is Xerces DOM Builder class. It uses the abstract DOM parser with a document scanner, a dtd scanner, and a validator, as well as a grammar pool.

Version:
$Id: DOMParserImpl.java 568412 2007-08-22 04:40:44Z mrglavas $
Author:
Pavani Mukthipudi, Sun Microsystems Inc., Elena Litani, IBM, Rahul Srivastava, Sun Microsystems Inc.

Field Summary
 
Fields inherited from interface org.w3c.dom.ls.LSParser
ACTION_APPEND_AS_CHILDREN, ACTION_INSERT_AFTER, ACTION_INSERT_BEFORE, ACTION_REPLACE, ACTION_REPLACE_CHILDREN
 
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
 
Constructor Summary
DOMParserImpl(java.lang.String configuration, java.lang.String schemaType)
          Constructs a DOM Builder using the standard parser configuration.
DOMParserImpl(SymbolTable symbolTable)
          Constructs a DOM Builder using the specified symbol table.
DOMParserImpl(SymbolTable symbolTable, XMLGrammarPool grammarPool)
          Constructs a DOM Builder using the specified symbol table and grammar pool.
DOMParserImpl(XMLParserConfiguration config)
          Constructs a DOM Builder using the specified parser configuration.
 
Method Summary
 void abort()
          Abort the loading of the document that is currently being loaded by the LSParser.
 boolean canSetParameter(java.lang.String name, java.lang.Object value)
          Check if setting a parameter to a specific value is supported.
 boolean getAsync()
          true if the LSParser is asynchronous, false if it is synchronous.
 boolean getBusy()
          true if the LSParser is currently busy loading a document, otherwise false.
 DOMConfiguration getDomConfig()
          The DOMConfiguration object used when parsing an input source.
 LSParserFilter getFilter()
          When the application provides a filter, the parser will call out to the filter at the completion of the construction of each Element node.
 java.lang.Object getParameter(java.lang.String name)
          Look up the value of a feature or a property.
 DOMStringList getParameterNames()
          DOM Level 3 CR - Experimental.
 Document parse(LSInput is)
          Parse an XML document from a resource identified by an LSInput.
 Document parseURI(java.lang.String uri)
          Parse an XML document from a location identified by an URI reference.
 Node parseWithContext(LSInput is, Node cnode, short action)
          Parse an XML document or fragment from a resource identified by an LSInput and insert the content into an existing document at the position epcified with the contextNode and action arguments.
 void reset()
          Resets the parser state.
 void setFilter(LSParserFilter filter)
          When the application provides a filter, the parser will call out to the filter at the completion of the construction of each Element node.
 void setParameter(java.lang.String name, java.lang.Object value)
          Set parameters and properties
 void startElement(QName element, XMLAttributes attributes, Augmentations augs)
          The start of an element.
 
Methods inherited from class org.apache.xerces.parsers.AbstractDOMParser
attributeDecl, characters, comment, doctypeDecl, dropDocumentReferences, elementDecl, emptyElement, endAttlist, endCDATA, endConditional, endDocument, endDTD, endElement, endExternalSubset, endGeneralEntity, endParameterEntity, externalEntityDecl, getDocument, ignorableWhitespace, ignoredCharacters, internalEntityDecl, notationDecl, processingInstruction, setLocale, startAttlist, startCDATA, startConditional, startDocument, startDTD, startExternalSubset, startGeneralEntity, startParameterEntity, textDecl, unparsedEntityDecl, xmlDecl
 
Methods inherited from class org.apache.xerces.parsers.AbstractXMLDocumentParser
any, element, empty, endContentModel, endGroup, getDocumentSource, getDTDContentModelSource, getDTDSource, occurrence, pcdata, separator, setDocumentSource, setDTDContentModelSource, setDTDSource, startContentModel, startGroup
 
Methods inherited from class org.apache.xerces.parsers.XMLParser
parse
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DOMParserImpl

public DOMParserImpl(java.lang.String configuration,
                     java.lang.String schemaType)
Constructs a DOM Builder using the standard parser configuration.


DOMParserImpl

public DOMParserImpl(XMLParserConfiguration config)
Constructs a DOM Builder using the specified parser configuration.


DOMParserImpl

public DOMParserImpl(SymbolTable symbolTable)
Constructs a DOM Builder using the specified symbol table.


DOMParserImpl

public DOMParserImpl(SymbolTable symbolTable,
                     XMLGrammarPool grammarPool)
Constructs a DOM Builder using the specified symbol table and grammar pool.

Method Detail

reset

public void reset()
Resets the parser state.

Overrides:
reset in class AbstractDOMParser
Throws:
SAXException - Thrown on initialization error.

getDomConfig

public DOMConfiguration getDomConfig()
Description copied from interface: LSParser
The DOMConfiguration object used when parsing an input source. This DOMConfiguration is specific to the parse operation. No parameter values from this DOMConfiguration object are passed automatically to the DOMConfiguration object on the Document that is created, or used, by the parse operation. The DOM application is responsible for passing any needed parameter values from this DOMConfiguration object to the DOMConfiguration object referenced by the Document object.
In addition to the parameters recognized in on the DOMConfiguration interface defined in [DOM Level 3 Core] , the DOMConfiguration objects for LSParser add or modify the following parameters:
"charset-overrides-xml-encoding"
true
[optional] (default) If a higher level protocol such as HTTP [IETF RFC 2616] provides an indication of the character encoding of the input stream being processed, that will override any encoding specified in the XML declaration or the Text declaration (see also section 4.3.3, "Character Encoding in Entities", in [XML 1.0]). Explicitly setting an encoding in the LSInput overrides any encoding from the protocol.
false
[required] The parser ignores any character set encoding information from higher-level protocols.
"disallow-doctype"
true
[optional] Throw a fatal "doctype-not-allowed" error if a doctype node is found while parsing the document. This is useful when dealing with things like SOAP envelopes where doctype nodes are not allowed.
false
[required] (default) Allow doctype nodes in the document.
"ignore-unknown-character-denormalizations"
true
[required] (default) If, while verifying full normalization when [XML 1.1] is supported, a processor encounters characters for which it cannot determine the normalization properties, then the processor will ignore any possible denormalizations caused by these characters. This parameter is ignored for [XML 1.0].
false
[optional] Report an fatal "unknown-character-denormalization" error if a character is encountered for which the processor cannot determine the normalization properties.
"infoset"
See the definition of DOMConfiguration for a description of this parameter. Unlike in [DOM Level 3 Core] , this parameter will default to true for LSParser.
"namespaces"
true
[required] (default) Perform the namespace processing as defined in [XML Namespaces] and [XML Namespaces 1.1] .
false
[optional] Do not perform the namespace processing.
"resource-resolver"
[required] A reference to a LSResourceResolver object, or null. If the value of this parameter is not null when an external resource (such as an external XML entity or an XML schema location) is encountered, the implementation will request that the LSResourceResolver referenced in this parameter resolves the resource.
"supported-media-types-only"
true
[optional] Check that the media type of the parsed resource is a supported media type. If an unsupported media type is encountered, a fatal error of type "unsupported-media-type" will be raised. The media types defined in [IETF RFC 3023] must always be accepted.
false
[required] (default) Accept any media type.
"validate"
See the definition of DOMConfiguration for a description of this parameter. Unlike in [DOM Level 3 Core] , the processing of the internal subset is always accomplished, even if this parameter is set to false.
"validate-if-schema"
See the definition of DOMConfiguration for a description of this parameter. Unlike in [DOM Level 3 Core] , the processing of the internal subset is always accomplished, even if this parameter is set to false.
"well-formed"
See the definition of DOMConfiguration for a description of this parameter. Unlike in [DOM Level 3 Core] , this parameter cannot be set to false.

Specified by:
getDomConfig in interface LSParser

getFilter

public LSParserFilter getFilter()
When the application provides a filter, the parser will call out to the filter at the completion of the construction of each Element node. The filter implementation can choose to remove the element from the document being constructed (unless the element is the document element) or to terminate the parse early. If the document is being validated when it's loaded the validation happens before the filter is called.

Specified by:
getFilter in interface LSParser

setFilter

public void setFilter(LSParserFilter filter)
When the application provides a filter, the parser will call out to the filter at the completion of the construction of each Element node. The filter implementation can choose to remove the element from the document being constructed (unless the element is the document element) or to terminate the parse early. If the document is being validated when it's loaded the validation happens before the filter is called.

Specified by:
setFilter in interface LSParser

setParameter

public void setParameter(java.lang.String name,
                         java.lang.Object value)
                  throws DOMException
Set parameters and properties

Specified by:
setParameter in interface DOMConfiguration
Parameters:
name - The name of the parameter to set.
value - The new value or null if the user wishes to unset the parameter. While the type of the value parameter is defined as DOMUserData, the object type must match the type defined by the definition of the parameter. For example, if the parameter is "error-handler", the value must be of type DOMErrorHandler.
Throws:
DOMException - NOT_FOUND_ERR: Raised when the parameter name is not recognized.
NOT_SUPPORTED_ERR: Raised when the parameter name is recognized but the requested value cannot be set.
TYPE_MISMATCH_ERR: Raised if the value type for this parameter name is incompatible with the expected value type.

getParameter

public java.lang.Object getParameter(java.lang.String name)
                              throws DOMException
Look up the value of a feature or a property.

Specified by:
getParameter in interface DOMConfiguration
Parameters:
name - The name of the parameter.
Returns:
The current object associated with the specified parameter or null if no object has been associated or if the parameter is not supported.
Throws:
DOMException - NOT_FOUND_ERR: Raised when the parameter name is not recognized.

canSetParameter

public boolean canSetParameter(java.lang.String name,
                               java.lang.Object value)
Description copied from interface: DOMConfiguration
Check if setting a parameter to a specific value is supported.

Specified by:
canSetParameter in interface DOMConfiguration
Parameters:
name - The name of the parameter to check.
value - An object. if null, the returned value is true.
Returns:
true if the parameter could be successfully set to the specified value, or false if the parameter is not recognized or the requested value is not supported. This does not change the current value of the parameter itself.

getParameterNames

public DOMStringList getParameterNames()
DOM Level 3 CR - Experimental. The list of the parameters supported by this DOMConfiguration object and for which at least one value can be set by the application. Note that this list can also contain parameter names defined outside this specification.

Specified by:
getParameterNames in interface DOMConfiguration

parseURI

public Document parseURI(java.lang.String uri)
                  throws LSException
Parse an XML document from a location identified by an URI reference. If the URI contains a fragment identifier (see section 4.1 in ), the behavior is not defined by this specification.

Specified by:
parseURI in interface LSParser
Parameters:
uri - The location of the XML document to be read.
Returns:
If the LSParser is a synchronous LSParser, the newly created and populated Document is returned, or null if an error occured. If the LSParser is asynchronous, null is returned since the document object may not yet be constructed when this method returns.
Throws:
LSException - PARSE_ERR: Raised if the LSParser was unable to load the XML document. DOM applications should attach a DOMErrorHandler using the parameter " error-handler" if they wish to get details on the error.

parse

public Document parse(LSInput is)
               throws LSException
Parse an XML document from a resource identified by an LSInput.

Specified by:
parse in interface LSParser
Parameters:
is - The LSInput from which the source of the document is to be read.
Returns:
If the LSParser is a synchronous LSParser, the newly created and populated Document is returned. If the LSParser is asynchronous, null is returned since the document object may not yet be constructed when this method returns.
Throws:
LSException - PARSE_ERR: Raised if the LSParser was unable to load the XML document. DOM applications should attach a DOMErrorHandler using the parameter " error-handler" if they wish to get details on the error.

parseWithContext

public Node parseWithContext(LSInput is,
                             Node cnode,
                             short action)
                      throws DOMException,
                             LSException
Parse an XML document or fragment from a resource identified by an LSInput and insert the content into an existing document at the position epcified with the contextNode and action arguments. When parsing the input stream the context node is used for resolving unbound namespace prefixes.

Specified by:
parseWithContext in interface LSParser
Parameters:
is - The LSInput from which the source document is to be read.
cnode - The Node that is used as the context for the data that is being parsed.
action - This parameter describes which action should be taken between the new set of node being inserted and the existing children of the context node. The set of possible actions is defined above.
Returns:
Return the node that is the result of the parse operation. If the result is more than one top-level node, the first one is returned.
Throws:
DOMException - HIERARCHY_REQUEST_ERR: Thrown if this action results in an invalid hierarchy (i.e. a Document with more than one document element).
LSException - PARSE_ERR: Raised if the LSParser was unable to load the XML fragment. DOM applications should attach a DOMErrorHandler using the parameter " error-handler" if they wish to get details on the error.

getAsync

public boolean getAsync()
Description copied from interface: LSParser
true if the LSParser is asynchronous, false if it is synchronous.

Specified by:
getAsync in interface LSParser
See Also:
LSParser.getAsync()

getBusy

public boolean getBusy()
Description copied from interface: LSParser
true if the LSParser is currently busy loading a document, otherwise false.

Specified by:
getBusy in interface LSParser
See Also:
LSParser.getBusy()

abort

public void abort()
Description copied from interface: LSParser
Abort the loading of the document that is currently being loaded by the LSParser. If the LSParser is currently not busy, a call to this method does nothing.

Specified by:
abort in interface LSParser
Overrides:
abort in class AbstractDOMParser
See Also:
LSParser.abort()

startElement

public void startElement(QName element,
                         XMLAttributes attributes,
                         Augmentations augs)
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. Overriding the parent to handle DOM_NAMESPACE_DECLARATIONS=false.

Specified by:
startElement in interface XMLDocumentHandler
Overrides:
startElement in class AbstractDOMParser
Parameters:
element - The name of the element.
attributes - The element attributes.
augs - Additional information that may include infoset augmentations
Throws:
XNIException - Thrown by handler to signal an error.