org.apache.xerces.parsers

## Class DOMParserImpl

- java.lang.Object
- - org.apache.xerces.parsers.XMLParser
  - - org.apache.xerces.parsers.AbstractXMLDocumentParser
    - - org.apache.xerces.parsers.AbstractDOMParser
      - - org.apache.xerces.parsers.DOMParserImpl

- All Implemented Interfaces:
    org.apache.xerces.xni.XMLDocumentHandler, org.apache.xerces.xni.XMLDTDContentModelHandler, org.apache.xerces.xni.XMLDTDHandler, org.w3c.dom.DOMConfiguration, org.w3c.dom.ls.LSParser
  Direct Known Subclasses:
    DOMASBuilderImpl

      public class DOMParserImpl
      extends AbstractDOMParser
      implements org.w3c.dom.ls.LSParser, org.w3c.dom.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 884566 2009-11-26 14:30:01Z knoaman $
  Author:
    Pavani Mukthipudi, Sun Microsystems Inc., Elena Litani, IBM, Rahul Srivastava, Sun Microsystems Inc.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static boolean` | `DEBUG`
    `protected static java.lang.String` | `DISALLOW_DOCTYPE_DECL_FEATURE` Feature identifier: disallow docType Decls.
    `protected static java.lang.String` | `DYNAMIC_VALIDATION` Dynamic validation
    `protected boolean` | `fBusy`
    `protected boolean` | `fNamespaceDeclarations` Include namespace declaration attributes in the document.
    `protected java.lang.String` | `fSchemaType`
    `protected static java.lang.String` | `HONOUR_ALL_SCHEMALOCATIONS` Feature identifier: honour all schemaLocations
    `protected static java.lang.String` | `NAMESPACE_GROWTH` Feature identifier: namespace growth
    `protected static java.lang.String` | `NAMESPACES` Feature identifier: namespaces.
    `protected static java.lang.String` | `NORMALIZE_DATA` Feature identifier: expose schema normalized value
    `protected static java.lang.String` | `PSVI_AUGMENT`
    `protected static java.lang.String` | `SYMBOL_TABLE`
    `protected static java.lang.String` | `TOLERATE_DUPLICATES` Feature identifier: tolerate duplicates
    `protected static java.lang.String` | `VALIDATION_FEATURE` Feature id: validation.
    `protected static java.lang.String` | `XMLSCHEMA` XML Schema validation
    `protected static java.lang.String` | `XMLSCHEMA_FULL_CHECKING` XML Schema full checking

    - ### Fields inherited from class org.apache.xerces.parsers.AbstractDOMParser

      `CORE_DOCUMENT_CLASS_NAME, CREATE_CDATA_NODES_FEATURE, CREATE_ENTITY_REF_NODES, CURRENT_ELEMENT_NODE, DEFAULT_DOCUMENT_CLASS_NAME, DEFER_NODE_EXPANSION, DOCUMENT_CLASS_NAME, fBaseURIStack, fCreateCDATANodes, fCreateEntityRefNodes, fCurrentCDATASection, fCurrentCDATASectionIndex, fCurrentEntityDecl, fCurrentNode, fCurrentNodeIndex, fDeferNodeExpansion, fDeferredDocumentImpl, fDeferredEntityDecl, fDocument, fDocumentClassName, fDocumentImpl, fDocumentIndex, fDocumentType, fDocumentTypeIndex, fDOMFilter, fErrorHandler, fFilterReject, fFirstChunk, fInCDATASection, fIncludeComments, fIncludeIgnorableWhitespace, fInDTD, fInDTDExternalSubset, fInEntityRef, fInternalSubset, fNamespaceAware, fRejectedElementDepth, fRoot, fSkippedElemStack, fStorePSVI, fStringBuffer, INCLUDE_COMMENTS_FEATURE, INCLUDE_IGNORABLE_WHITESPACE, PSVI_DOCUMENT_CLASS_NAME`

    - ### Fields inherited from class org.apache.xerces.parsers.AbstractXMLDocumentParser

      `fDocumentSource, fDTDContentModelSource, fDTDSource`

    - ### Fields inherited from class org.apache.xerces.parsers.XMLParser

      `ENTITY_RESOLVER, ERROR_HANDLER, fConfiguration`

    - ### 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

    Constructors
    Constructor and Description
    `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, org.apache.xerces.xni.grammars.XMLGrammarPool grammarPool)` Constructs a DOM Builder using the specified symbol table and grammar pool.
    `DOMParserImpl(org.apache.xerces.xni.parser.XMLParserConfiguration config)` Constructs a DOM Builder using the specified parser configuration.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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`.
    `org.w3c.dom.DOMConfiguration` | `getDomConfig()` The `DOMConfiguration` object used when parsing an input source.
    `org.w3c.dom.ls.LSParserFilter` | `getFilter()` When a filter is provided, the implementation will call out to the filter as it is constructing the DOM tree structure.
    `java.lang.Object` | `getParameter(java.lang.String name)` Look up the value of a feature or a property.
    `org.w3c.dom.DOMStringList` | `getParameterNames()` DOM Level 3 CR - Experimental.
    `org.w3c.dom.Document` | `parse(org.w3c.dom.ls.LSInput is)` Parse an XML document from a resource identified by an `LSInput`.
    `org.w3c.dom.Document` | `parseURI(java.lang.String uri)` Parse an XML document from a location identified by an URI reference.
    `org.w3c.dom.Node` | `parseWithContext(org.w3c.dom.ls.LSInput is, org.w3c.dom.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(org.w3c.dom.ls.LSParserFilter filter)` When a filter is provided, the implementation will call out to the filter as it is constructing the DOM tree structure.
    `void` | `setParameter(java.lang.String name, java.lang.Object value)` Set parameters and properties
    `void` | `startElement(org.apache.xerces.xni.QName element, org.apache.xerces.xni.XMLAttributes attributes, org.apache.xerces.xni.Augmentations augs)` The start of an element.

    - ### Methods inherited from class org.apache.xerces.parsers.AbstractDOMParser

      `attributeDecl, characters, comment, createAttrNode, createElementNode, doctypeDecl, dropDocumentReferences, elementDecl, emptyElement, endAttlist, endCDATA, endConditional, endDocument, endDTD, endElement, endExternalSubset, endGeneralEntity, endParameterEntity, externalEntityDecl, getDocument, getDocumentClassName, handleBaseURI, handleBaseURI, ignorableWhitespace, ignoredCharacters, internalEntityDecl, notationDecl, processingInstruction, setCharacterData, setDocumentClassName, 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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### NAMESPACES

          protected static final java.lang.String NAMESPACES

      Feature identifier: namespaces.
      See Also:
        Constant Field Values

    - #### VALIDATION_FEATURE

          protected static final java.lang.String VALIDATION_FEATURE

      Feature id: validation.
      See Also:
        Constant Field Values

    - #### XMLSCHEMA

          protected static final java.lang.String XMLSCHEMA

      XML Schema validation
      See Also:
        Constant Field Values

    - #### XMLSCHEMA_FULL_CHECKING

          protected static final java.lang.String XMLSCHEMA_FULL_CHECKING

      XML Schema full checking
      See Also:
        Constant Field Values

    - #### DYNAMIC_VALIDATION

          protected static final java.lang.String DYNAMIC_VALIDATION

      Dynamic validation
      See Also:
        Constant Field Values

    - #### NORMALIZE_DATA

          protected static final java.lang.String NORMALIZE_DATA

      Feature identifier: expose schema normalized value
      See Also:
        Constant Field Values

    - #### DISALLOW_DOCTYPE_DECL_FEATURE

          protected static final java.lang.String DISALLOW_DOCTYPE_DECL_FEATURE

      Feature identifier: disallow docType Decls.
      See Also:
        Constant Field Values

    - #### HONOUR_ALL_SCHEMALOCATIONS

          protected static final java.lang.String HONOUR_ALL_SCHEMALOCATIONS

      Feature identifier: honour all schemaLocations
      See Also:
        Constant Field Values

    - #### NAMESPACE_GROWTH

          protected static final java.lang.String NAMESPACE_GROWTH

      Feature identifier: namespace growth
      See Also:
        Constant Field Values

    - #### TOLERATE_DUPLICATES

          protected static final java.lang.String TOLERATE_DUPLICATES

      Feature identifier: tolerate duplicates
      See Also:
        Constant Field Values

    - #### SYMBOL_TABLE

          protected static final java.lang.String SYMBOL_TABLE

      See Also:
        Constant Field Values

    - #### PSVI_AUGMENT

          protected static final java.lang.String PSVI_AUGMENT

      See Also:
        Constant Field Values

    - #### fNamespaceDeclarations

          protected boolean fNamespaceDeclarations

      Include namespace declaration attributes in the document.

    - #### fSchemaType

          protected java.lang.String fSchemaType

    - #### fBusy

          protected boolean fBusy

    - #### DEBUG

          protected static final boolean DEBUG

      See Also:
        Constant Field Values

  - ### 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(org.apache.xerces.xni.parser.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,
                       org.apache.xerces.xni.grammars.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 org.w3c.dom.DOMConfiguration getDomConfig()

      Description copied from interface: `org.w3c.dom.ls.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 `org.w3c.dom.ls.LSParser`

    - #### getFilter

          public org.w3c.dom.ls.LSParserFilter getFilter()

      When a filter is provided, the implementation will call out to the filter as it is constructing the DOM tree structure. The filter can choose to remove elements from the document being constructed, or to terminate the parsing early.
      The filter is invoked after the operations requested by the `DOMConfiguration` parameters have been applied. For example, if " validate" is set to `true`, the validation is done before invoking the filter.
      Specified by:
        `getFilter` in interface `org.w3c.dom.ls.LSParser`

    - #### setFilter

          public void setFilter(org.w3c.dom.ls.LSParserFilter filter)

      When a filter is provided, the implementation will call out to the filter as it is constructing the DOM tree structure. The filter can choose to remove elements from the document being constructed, or to terminate the parsing early.
      The filter is invoked after the operations requested by the `DOMConfiguration` parameters have been applied. For example, if " validate" is set to `true`, the validation is done before invoking the filter.
      Specified by:
        `setFilter` in interface `org.w3c.dom.ls.LSParser`

    - #### setParameter

          public void setParameter(java.lang.String name,
                          java.lang.Object value)
                            throws org.w3c.dom.DOMException

      Set parameters and properties
      Specified by:
        `setParameter` in interface `org.w3c.dom.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:
        `org.w3c.dom.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 org.w3c.dom.DOMException

      Look up the value of a feature or a property.
      Specified by:
        `getParameter` in interface `org.w3c.dom.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:
        `org.w3c.dom.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: `org.w3c.dom.DOMConfiguration`
      Check if setting a parameter to a specific value is supported.
      Specified by:
        `canSetParameter` in interface `org.w3c.dom.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 org.w3c.dom.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 `org.w3c.dom.DOMConfiguration`

    - #### parseURI

          public org.w3c.dom.Document parseURI(java.lang.String uri)
                                        throws org.w3c.dom.ls.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 `org.w3c.dom.ls.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:
        `org.w3c.dom.ls.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 org.w3c.dom.Document parse(org.w3c.dom.ls.LSInput is)
                                     throws org.w3c.dom.ls.LSException

      Parse an XML document from a resource identified by an `LSInput`.
      Specified by:
        `parse` in interface `org.w3c.dom.ls.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:
        `org.w3c.dom.ls.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 org.w3c.dom.Node parseWithContext(org.w3c.dom.ls.LSInput is,
                                          org.w3c.dom.Node cnode,
                                          short action)
                                            throws org.w3c.dom.DOMException,
                                                   org.w3c.dom.ls.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 `org.w3c.dom.ls.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:
        `org.w3c.dom.DOMException` - HIERARCHY_REQUEST_ERR: Thrown if this action results in an invalid hierarchy (i.e. a Document with more than one document element).
        `org.w3c.dom.ls.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: `org.w3c.dom.ls.LSParser`
      `true` if the `LSParser` is asynchronous, `false` if it is synchronous.
      Specified by:
        `getAsync` in interface `org.w3c.dom.ls.LSParser`
      See Also:
        `LSParser.getAsync()`

    - #### getBusy

          public boolean getBusy()

      Description copied from interface: `org.w3c.dom.ls.LSParser`
      `true` if the `LSParser` is currently busy loading a document, otherwise `false`.
      Specified by:
        `getBusy` in interface `org.w3c.dom.ls.LSParser`
      See Also:
        `LSParser.getBusy()`

    - #### abort

          public void abort()

      Description copied from interface: `org.w3c.dom.ls.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 `org.w3c.dom.ls.LSParser`
      Overrides:
        `abort` in class `AbstractDOMParser`
      See Also:
        `LSParser.abort()`

    - #### startElement

          public void startElement(org.apache.xerces.xni.QName element,
                          org.apache.xerces.xni.XMLAttributes attributes,
                          org.apache.xerces.xni.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 `org.apache.xerces.xni.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:
        `org.apache.xerces.xni.XNIException` - Thrown by handler to signal an error.

Copyright © 1999-2022 The Apache Software Foundation. All Rights Reserved.