XMLDocumentScannerImpl (Xerces2 Implementation)
Date: 2018-10-17

org.apache.xerces.impl

## Class XMLDocumentScannerImpl

- java.lang.Object
- - org.apache.xerces.impl.XMLScanner
  - - org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
    - - org.apache.xerces.impl.XMLDocumentScannerImpl

- All Implemented Interfaces:
    XMLEntityHandler, org.apache.xerces.xni.parser.XMLComponent, org.apache.xerces.xni.parser.XMLDocumentScanner, org.apache.xerces.xni.parser.XMLDocumentSource
  Direct Known Subclasses:
    XML11DocumentScannerImpl, XMLNSDocumentScannerImpl

      public class XMLDocumentScannerImpl
      extends XMLDocumentFragmentScannerImpl

  This class is responsible for scanning XML document structure and content. The scanner acts as the source for the document information which is communicated to the document handler.

  This component requires the following features and properties from the component manager that uses it:

  - http://xml.org/sax/features/namespaces
  - http://xml.org/sax/features/validation
  - http://apache.org/xml/features/nonvalidating/load-external-dtd
  - http://apache.org/xml/features/scanner/notify-char-refs
  - http://apache.org/xml/features/scanner/notify-builtin-refs
  - http://apache.org/xml/properties/internal/symbol-table
  - http://apache.org/xml/properties/internal/error-reporter
  - http://apache.org/xml/properties/internal/entity-manager
  - http://apache.org/xml/properties/internal/dtd-scanner
  Version:
    $Id: XMLDocumentScannerImpl.java 572055 2007-09-02 17:55:43Z mrglavas $
  Author:
    Glenn Marcy, IBM, Andy Clark, IBM, Arnaud Le Hors, IBM, Eric Ye, IBM

  # INTERNAL:

    Usage of this class is not supported. It may be altered or removed at any time.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected class` | `XMLDocumentScannerImpl.ContentDispatcher` Dispatcher to handle content scanning.
    `protected class` | `XMLDocumentScannerImpl.DTDDispatcher` Dispatcher to handle the internal and external DTD subsets.
    `protected class` | `XMLDocumentScannerImpl.PrologDispatcher` Dispatcher to handle prolog scanning.
    `protected class` | `XMLDocumentScannerImpl.TrailingMiscDispatcher` Dispatcher to handle trailing miscellaneous section scanning.
    `protected class` | `XMLDocumentScannerImpl.XMLDeclDispatcher` Dispatcher to handle XMLDecl scanning.

    - ### Nested classes/interfaces inherited from class org.apache.xerces.impl.XMLDocumentFragmentScannerImpl

      `XMLDocumentFragmentScannerImpl.Dispatcher, XMLDocumentFragmentScannerImpl.ElementStack, XMLDocumentFragmentScannerImpl.FragmentContentDispatcher`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static java.lang.String` | `DISALLOW_DOCTYPE_DECL_FEATURE` Feature identifier: load external DTD.
    `protected static java.lang.String` | `DTD_SCANNER` Property identifier: DTD scanner.
    `protected boolean` | `fDisallowDoctype` Disallow doctype declaration.
    `protected java.lang.String` | `fDoctypeName` Doctype name.
    `protected java.lang.String` | `fDoctypePublicId` Doctype declaration public identifier.
    `protected java.lang.String` | `fDoctypeSystemId` Doctype declaration system identifier.
    `protected XMLDocumentFragmentScannerImpl.Dispatcher` | `fDTDDispatcher` DTD dispatcher.
    `protected org.apache.xerces.xni.parser.XMLDTDScanner` | `fDTDScanner` DTD scanner.
    `protected boolean` | `fLoadExternalDTD` Load external DTD.
    `protected org.apache.xerces.xni.NamespaceContext` | `fNamespaceContext` Namespace support.
    `protected XMLDocumentFragmentScannerImpl.Dispatcher` | `fPrologDispatcher` Prolog dispatcher.
    `protected boolean` | `fScanningDTD` Scanning DTD.
    `protected boolean` | `fSeenDoctypeDecl` Seen doctype declaration.
    `protected XMLDocumentFragmentScannerImpl.Dispatcher` | `fTrailingMiscDispatcher` Trailing miscellaneous section dispatcher.
    `protected ValidationManager` | `fValidationManager` Validation manager .
    `protected XMLDocumentFragmentScannerImpl.Dispatcher` | `fXMLDeclDispatcher` XML declaration dispatcher.
    `protected static java.lang.String` | `LOAD_EXTERNAL_DTD` Feature identifier: load external DTD.
    `protected static java.lang.String` | `NAMESPACE_CONTEXT` property identifier: NamespaceContext
    `protected static int` | `SCANNER_STATE_DTD_EXTERNAL` Scanner state: open DTD external subset.
    `protected static int` | `SCANNER_STATE_DTD_EXTERNAL_DECLS` Scanner state: DTD external declarations.
    `protected static int` | `SCANNER_STATE_DTD_INTERNAL_DECLS` Scanner state: DTD internal declarations.
    `protected static int` | `SCANNER_STATE_PROLOG` Scanner state: prolog.
    `protected static int` | `SCANNER_STATE_TRAILING_MISC` Scanner state: trailing misc.
    `protected static int` | `SCANNER_STATE_XML_DECL` Scanner state: XML declaration.
    `protected static java.lang.String` | `VALIDATION_MANAGER` property identifier: ValidationManager

    - ### Fields inherited from class org.apache.xerces.impl.XMLDocumentFragmentScannerImpl

      `DEBUG_CONTENT_SCANNING, ENTITY_RESOLVER, fAttributeQName, fAttributes, fContentDispatcher, fCurrentElement, fDispatcher, fDocumentHandler, fElementQName, fElementStack, fEntityStack, fExternalSubsetResolver, fHasExternalDTD, fInScanContent, fIsEntityDeclaredVC, fMarkupDepth, fNotifyBuiltInRefs, fScannerState, fStandalone, fTempString, fTempString2, NAMESPACES, NOTIFY_BUILTIN_REFS, SCANNER_STATE_CDATA, SCANNER_STATE_COMMENT, SCANNER_STATE_CONTENT, SCANNER_STATE_DOCTYPE, SCANNER_STATE_END_OF_INPUT, SCANNER_STATE_PI, SCANNER_STATE_REFERENCE, SCANNER_STATE_ROOT_ELEMENT, SCANNER_STATE_START_OF_MARKUP, SCANNER_STATE_TERMINATED, SCANNER_STATE_TEXT_DECL`

    - ### Fields inherited from class org.apache.xerces.impl.XMLScanner

      `DEBUG_ATTR_NORMALIZATION, ENTITY_MANAGER, ERROR_REPORTER, fAmpSymbol, fAposSymbol, fCharRefLiteral, fEncodingSymbol, fEntityDepth, fEntityManager, fEntityScanner, fErrorReporter, fGtSymbol, fLtSymbol, fNamespaces, fNotifyCharRefs, fParserSettings, fQuotSymbol, fReportEntity, fResourceIdentifier, fScanningAttribute, fStandaloneSymbol, fSymbolTable, fValidation, fVersionSymbol, NOTIFY_CHAR_REFS, PARSER_SETTINGS, SYMBOL_TABLE, VALIDATION`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `XMLDocumentScannerImpl()` Default constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected XMLDocumentFragmentScannerImpl.Dispatcher` | `createContentDispatcher()` Creates a content dispatcher.
    `void` | `endEntity(java.lang.String name, org.apache.xerces.xni.Augmentations augs)` This method notifies the end of an entity.
    `java.lang.Boolean` | `getFeatureDefault(java.lang.String featureId)` Returns the default state for a feature, or null if this component does not want to report a default value for this feature.
    `java.lang.Object` | `getPropertyDefault(java.lang.String propertyId)` Returns the default state for a property, or null if this component does not want to report a default value for this property.
    `java.lang.String[]` | `getRecognizedFeatures()` Returns a list of feature identifiers that are recognized by this component.
    `java.lang.String[]` | `getRecognizedProperties()` Returns a list of property identifiers that are recognized by this component.
    `protected java.lang.String` | `getScannerStateName(int state)` Returns the scanner state name.
    `void` | `reset(org.apache.xerces.xni.parser.XMLComponentManager componentManager)` Resets the component.
    `protected boolean` | `scanDoctypeDecl()` Scans a doctype declaration.
    `void` | `setFeature(java.lang.String featureId, boolean state)` Sets the state of a feature.
    `void` | `setInputSource(org.apache.xerces.xni.parser.XMLInputSource inputSource)` Sets the input source.
    `void` | `setProperty(java.lang.String propertyId, java.lang.Object value)` Sets the value of a property.
    `void` | `startEntity(java.lang.String name, org.apache.xerces.xni.XMLResourceIdentifier identifier, java.lang.String encoding, org.apache.xerces.xni.Augmentations augs)` This method notifies of the start of an entity.

    - ### Methods inherited from class org.apache.xerces.impl.XMLDocumentFragmentScannerImpl

      `getDispatcherName, getDocumentHandler, handleEndElement, scanAttribute, scanCDATASection, scanCharReference, scanComment, scanContent, scanDocument, scanEndElement, scanEntityReference, scanPIData, scanStartElement, scanStartElementAfterName, scanStartElementName, scanXMLDeclOrTextDecl, setDispatcher, setDocumentHandler, setScannerState`

    - ### Methods inherited from class org.apache.xerces.impl.XMLScanner

      `getFeature, getVersionNotSupportedKey, isInvalid, isInvalidLiteral, isUnchangedByNormalization, isValidNameChar, isValidNameStartChar, isValidNameStartHighSurrogate, isValidNCName, normalizeWhitespace, normalizeWhitespace, reportFatalError, reset, scanAttributeValue, scanCharReferenceValue, scanComment, scanExternalID, scanPI, scanPseudoAttribute, scanPubidLiteral, scanSurrogates, scanXMLDeclOrTextDecl, versionSupported`

    - ### Methods inherited from class java.lang.Object

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

- - ### Field Detail

    - #### SCANNER_STATE_XML_DECL

          protected static final int SCANNER_STATE_XML_DECL

      Scanner state: XML declaration.
      See Also:
        Constant Field Values

    - #### SCANNER_STATE_PROLOG

          protected static final int SCANNER_STATE_PROLOG

      Scanner state: prolog.
      See Also:
        Constant Field Values

    - #### SCANNER_STATE_TRAILING_MISC

          protected static final int SCANNER_STATE_TRAILING_MISC

      Scanner state: trailing misc.
      See Also:
        Constant Field Values

    - #### SCANNER_STATE_DTD_INTERNAL_DECLS

          protected static final int SCANNER_STATE_DTD_INTERNAL_DECLS

      Scanner state: DTD internal declarations.
      See Also:
        Constant Field Values

    - #### SCANNER_STATE_DTD_EXTERNAL

          protected static final int SCANNER_STATE_DTD_EXTERNAL

      Scanner state: open DTD external subset.
      See Also:
        Constant Field Values

    - #### SCANNER_STATE_DTD_EXTERNAL_DECLS

          protected static final int SCANNER_STATE_DTD_EXTERNAL_DECLS

      Scanner state: DTD external declarations.
      See Also:
        Constant Field Values

    - #### LOAD_EXTERNAL_DTD

          protected static final java.lang.String LOAD_EXTERNAL_DTD

      Feature identifier: load external DTD.
      See Also:
        Constant Field Values

    - #### DISALLOW_DOCTYPE_DECL_FEATURE

          protected static final java.lang.String DISALLOW_DOCTYPE_DECL_FEATURE

      Feature identifier: load external DTD.
      See Also:
        Constant Field Values

    - #### DTD_SCANNER

          protected static final java.lang.String DTD_SCANNER

      Property identifier: DTD scanner.
      See Also:
        Constant Field Values

    - #### VALIDATION_MANAGER

          protected static final java.lang.String VALIDATION_MANAGER

      property identifier: ValidationManager
      See Also:
        Constant Field Values

    - #### NAMESPACE_CONTEXT

          protected static final java.lang.String NAMESPACE_CONTEXT

      property identifier: NamespaceContext
      See Also:
        Constant Field Values

    - #### fDTDScanner

          protected org.apache.xerces.xni.parser.XMLDTDScanner fDTDScanner

      DTD scanner.

    - #### fValidationManager

          protected ValidationManager fValidationManager

      Validation manager .

    - #### fScanningDTD

          protected boolean fScanningDTD

      Scanning DTD.

    - #### fDoctypeName

          protected java.lang.String fDoctypeName

      Doctype name.

    - #### fDoctypePublicId

          protected java.lang.String fDoctypePublicId

      Doctype declaration public identifier.

    - #### fDoctypeSystemId

          protected java.lang.String fDoctypeSystemId

      Doctype declaration system identifier.

    - #### fNamespaceContext

          protected org.apache.xerces.xni.NamespaceContext fNamespaceContext

      Namespace support.

    - #### fLoadExternalDTD

          protected boolean fLoadExternalDTD

      Load external DTD.

    - #### fDisallowDoctype

          protected boolean fDisallowDoctype

      Disallow doctype declaration.

    - #### fSeenDoctypeDecl

          protected boolean fSeenDoctypeDecl

      Seen doctype declaration.

    - #### fXMLDeclDispatcher

          protected final XMLDocumentFragmentScannerImpl.Dispatcher fXMLDeclDispatcher

      XML declaration dispatcher.

    - #### fPrologDispatcher

          protected final XMLDocumentFragmentScannerImpl.Dispatcher fPrologDispatcher

      Prolog dispatcher.

    - #### fDTDDispatcher

          protected final XMLDocumentFragmentScannerImpl.Dispatcher fDTDDispatcher

      DTD dispatcher.

    - #### fTrailingMiscDispatcher

          protected final XMLDocumentFragmentScannerImpl.Dispatcher fTrailingMiscDispatcher

      Trailing miscellaneous section dispatcher.

  - ### Constructor Detail

    - #### XMLDocumentScannerImpl

          public XMLDocumentScannerImpl()

      Default constructor.

  - ### Method Detail

    - #### setInputSource

          public void setInputSource(org.apache.xerces.xni.parser.XMLInputSource inputSource)
                              throws java.io.IOException

      Sets the input source.
      Specified by:
        `setInputSource` in interface `org.apache.xerces.xni.parser.XMLDocumentScanner`
      Overrides:
        `setInputSource` in class `XMLDocumentFragmentScannerImpl`
      Parameters:
        `inputSource` - The input source.
      Throws:
        `java.io.IOException` - Thrown on i/o error.

    - #### reset

          public void reset(org.apache.xerces.xni.parser.XMLComponentManager componentManager)
                     throws org.apache.xerces.xni.parser.XMLConfigurationException

      Resets the component. The component can query the component manager about any features and properties that affect the operation of the component.
      Specified by:
        `reset` in interface `org.apache.xerces.xni.parser.XMLComponent`
      Overrides:
        `reset` in class `XMLDocumentFragmentScannerImpl`
      Parameters:
        `componentManager` - The component manager.
      Throws:
        `SAXException` - Thrown by component on initialization error. For example, if a feature or property is required for the operation of the component, the component manager may throw a SAXNotRecognizedException or a SAXNotSupportedException.
        `org.apache.xerces.xni.parser.XMLConfigurationException`

    - #### getRecognizedFeatures

          public java.lang.String[] getRecognizedFeatures()

      Returns a list of feature identifiers that are recognized by this component. This method may return null if no features are recognized by this component.
      Specified by:
        `getRecognizedFeatures` in interface `org.apache.xerces.xni.parser.XMLComponent`
      Overrides:
        `getRecognizedFeatures` in class `XMLDocumentFragmentScannerImpl`

    - #### setFeature

          public void setFeature(java.lang.String featureId,
                                 boolean state)
                          throws org.apache.xerces.xni.parser.XMLConfigurationException

      Sets the state of a feature. This method is called by the component manager any time after reset when a feature changes state.

      Note: Components should silently ignore features that do not affect the operation of the component.

      Specified by:
        `setFeature` in interface `org.apache.xerces.xni.parser.XMLComponent`
      Overrides:
        `setFeature` in class `XMLDocumentFragmentScannerImpl`
      Parameters:
        `featureId` - The feature identifier.
        `state` - The state of the feature.
      Throws:
        `SAXNotRecognizedException` - The component should not throw this exception.
        `SAXNotSupportedException` - The component should not throw this exception.
        `org.apache.xerces.xni.parser.XMLConfigurationException` - Thrown for configuration error. In general, components should only throw this exception if it is really a critical error.

    - #### getRecognizedProperties

          public java.lang.String[] getRecognizedProperties()

      Returns a list of property identifiers that are recognized by this component. This method may return null if no properties are recognized by this component.
      Specified by:
        `getRecognizedProperties` in interface `org.apache.xerces.xni.parser.XMLComponent`
      Overrides:
        `getRecognizedProperties` in class `XMLDocumentFragmentScannerImpl`

    - #### setProperty

          public void setProperty(java.lang.String propertyId,
                                  java.lang.Object value)
                           throws org.apache.xerces.xni.parser.XMLConfigurationException

      Sets the value of a property. This method is called by the component manager any time after reset when a property changes value.

      Note: Components should silently ignore properties that do not affect the operation of the component.

      Specified by:
        `setProperty` in interface `org.apache.xerces.xni.parser.XMLComponent`
      Overrides:
        `setProperty` in class `XMLDocumentFragmentScannerImpl`
      Parameters:
        `propertyId` - The property identifier.
        `value` - The value of the property.
      Throws:
        `SAXNotRecognizedException` - The component should not throw this exception.
        `SAXNotSupportedException` - The component should not throw this exception.
        `org.apache.xerces.xni.parser.XMLConfigurationException` - Thrown for configuration error. In general, components should only throw this exception if it is really a critical error.

    - #### getFeatureDefault

          public java.lang.Boolean getFeatureDefault(java.lang.String featureId)

      Returns the default state for a feature, or null if this component does not want to report a default value for this feature.
      Specified by:
        `getFeatureDefault` in interface `org.apache.xerces.xni.parser.XMLComponent`
      Overrides:
        `getFeatureDefault` in class `XMLDocumentFragmentScannerImpl`
      Parameters:
        `featureId` - The feature identifier.
      Since:
        Xerces 2.2.0

    - #### getPropertyDefault

          public java.lang.Object getPropertyDefault(java.lang.String propertyId)

      Returns the default state for a property, or null if this component does not want to report a default value for this property.
      Specified by:
        `getPropertyDefault` in interface `org.apache.xerces.xni.parser.XMLComponent`
      Overrides:
        `getPropertyDefault` in class `XMLDocumentFragmentScannerImpl`
      Parameters:
        `propertyId` - The property identifier.
      Since:
        Xerces 2.2.0

    - #### startEntity

          public void startEntity(java.lang.String name,
                                  org.apache.xerces.xni.XMLResourceIdentifier identifier,
                                  java.lang.String encoding,
                                  org.apache.xerces.xni.Augmentations augs)
                           throws org.apache.xerces.xni.XNIException

      This method notifies of the start of an entity. The DTD has the pseudo-name of "[dtd]" parameter entity names start with '%'; and general entities are just specified by their name.
      Specified by:
        `startEntity` in interface `XMLEntityHandler`
      Overrides:
        `startEntity` in class `XMLDocumentFragmentScannerImpl`
      Parameters:
        `name` - The name of the entity.
        `identifier` - The resource identifier.
        `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 entities or a document entity that is parsed from a java.io.Reader).
        `augs` - Additional information that may include infoset augmentations
      Throws:
        `org.apache.xerces.xni.XNIException` - Thrown by handler to signal an error.

    - #### endEntity

          public void endEntity(java.lang.String name,
                                org.apache.xerces.xni.Augmentations augs)
                         throws org.apache.xerces.xni.XNIException

      This method notifies the end of an entity. The DTD has the pseudo-name of "[dtd]" parameter entity names start with '%'; and general entities are just specified by their name.
      Specified by:
        `endEntity` in interface `XMLEntityHandler`
      Overrides:
        `endEntity` in class `XMLDocumentFragmentScannerImpl`
      Parameters:
        `name` - The name of the entity.
        `augs` - Additional information that may include infoset augmentations
      Throws:
        `org.apache.xerces.xni.XNIException` - Thrown by handler to signal an error.

    - #### createContentDispatcher

          protected XMLDocumentFragmentScannerImpl.Dispatcher createContentDispatcher()

      Creates a content dispatcher.
      Overrides:
        `createContentDispatcher` in class `XMLDocumentFragmentScannerImpl`

    - #### scanDoctypeDecl

          protected boolean scanDoctypeDecl()
                                     throws java.io.IOException,
                                            org.apache.xerces.xni.XNIException

      Scans a doctype declaration.
      Throws:
        `java.io.IOException`
        `org.apache.xerces.xni.XNIException`

    - #### getScannerStateName

          protected java.lang.String getScannerStateName(int state)

      Returns the scanner state name.
      Overrides:
        `getScannerStateName` in class `XMLDocumentFragmentScannerImpl`

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