Class StAXReaderWrapper

  • All Implemented Interfaces:
    IXMLReader

    public class StAXReaderWrapper
    extends java.lang.Object
    implements IXMLReader
    Wrapper for a StAX parser implementation. This delegates most calls more or less directly, only adding the required namespace functionality on top of the StAX API.
    • Field Detail

      • s_eventTranslations

        static final byte[] s_eventTranslations
        Event type code translation array. Indexed by the StAX event code, it returns the corresponding XML reader event code.
      • m_parser

        private final javax.xml.stream.XMLStreamReader m_parser
        Actual parser.
      • m_isNamespaceAware

        final boolean m_isNamespaceAware
        Parser processing namespaces flag.
      • m_docName

        private final java.lang.String m_docName
        Document name.
      • m_nestingDepth

        int m_nestingDepth
        Current element nesting depth.
      • m_inScopeCounts

        private IntStack m_inScopeCounts
        Namespace definitions in scope at each nesting depth.
      • m_inScopePrefixes

        private GrowableStringArray m_inScopePrefixes
        Namespace prefixes in scope.
      • m_accumulatedText

        private java.lang.String m_accumulatedText
        Accumulated text for return.
      • m_isProcessingInstruction

        private boolean m_isProcessingInstruction
        Accumulated text is processing instruction flag (otherwise content)
      • m_encoding

        private java.lang.String m_encoding
        Document encoding (apparently cannot be read after parse done).
    • Constructor Detail

      • StAXReaderWrapper

        public StAXReaderWrapper​(javax.xml.stream.XMLStreamReader rdr,
                                 java.lang.String name,
                                 boolean nsa)
        Constructor used by factory. This checks the parser state, and if positioned at a start tag it initializes the namespace information for that start tag.
        Parameters:
        rdr - event reader
        name - document name
        nsa - namespace aware flag
    • Method Detail

      • init

        public void init()
        Initialize reader.
        Specified by:
        init in interface IXMLReader
      • buildPositionString

        public java.lang.String buildPositionString()
        Build current parse input position description.
        Specified by:
        buildPositionString in interface IXMLReader
        Returns:
        text description of current parse position
      • startTag

        private void startTag()
        Handle start tag. This increments the nesting count, and records all namespaces associated with the start tag.
      • endTag

        private void endTag()
        Handle end tag. This decrements the nesting count, and deletes all namespaces associated with the start tag.
      • nextToken

        public int nextToken()
                      throws JiBXException
        Description copied from interface: IXMLReader
        Advance to next parse event of input document.
        Specified by:
        nextToken in interface IXMLReader
        Returns:
        parse event type code
        Throws:
        JiBXException - if error reading or parsing document
      • next

        public int next()
                 throws JiBXException
        Description copied from interface: IXMLReader
        Advance to next binding component of input document. This is a higher-level operation than IXMLReader.nextToken(), which consolidates text content and ignores parse events for components such as comments and PIs.
        Specified by:
        next in interface IXMLReader
        Returns:
        parse event type code
        Throws:
        JiBXException - if error reading or parsing document
      • getEventType

        public int getEventType()
                         throws JiBXException
        Description copied from interface: IXMLReader
        Gets the current parse event type, without changing the current parse state.
        Specified by:
        getEventType in interface IXMLReader
        Returns:
        parse event type code
        Throws:
        JiBXException - if error parsing document
      • getName

        public java.lang.String getName()
        Description copied from interface: IXMLReader
        Get element name from the current start or end tag.
        Specified by:
        getName in interface IXMLReader
        Returns:
        local name if namespace handling enabled, full name if namespace handling disabled
      • getNamespace

        public java.lang.String getNamespace()
        Description copied from interface: IXMLReader
        Get element namespace from the current start or end tag.
        Specified by:
        getNamespace in interface IXMLReader
        Returns:
        namespace URI if namespace handling enabled and element is in a namespace, empty string otherwise
      • getPrefix

        public java.lang.String getPrefix()
        Description copied from interface: IXMLReader
        Get element prefix from the current start or end tag.
        Specified by:
        getPrefix in interface IXMLReader
        Returns:
        prefix text (null if no prefix)
      • getAttributeCount

        public int getAttributeCount()
        Description copied from interface: IXMLReader
        Get the number of attributes of the current start tag.
        Specified by:
        getAttributeCount in interface IXMLReader
        Returns:
        number of attributes
      • getAttributeName

        public java.lang.String getAttributeName​(int index)
        Description copied from interface: IXMLReader
        Get an attribute name from the current start tag.
        Specified by:
        getAttributeName in interface IXMLReader
        Parameters:
        index - attribute index
        Returns:
        local name if namespace handling enabled, full name if namespace handling disabled
      • getAttributeNamespace

        public java.lang.String getAttributeNamespace​(int index)
        Description copied from interface: IXMLReader
        Get an attribute namespace from the current start tag.
        Specified by:
        getAttributeNamespace in interface IXMLReader
        Parameters:
        index - attribute index
        Returns:
        namespace URI if namespace handling enabled and attribute is in a namespace, empty string otherwise
      • getAttributePrefix

        public java.lang.String getAttributePrefix​(int index)
        Description copied from interface: IXMLReader
        Get an attribute prefix from the current start tag.
        Specified by:
        getAttributePrefix in interface IXMLReader
        Parameters:
        index - attribute index
        Returns:
        prefix for attribute (null if no prefix present)
      • getAttributeValue

        public java.lang.String getAttributeValue​(int index)
        Description copied from interface: IXMLReader
        Get an attribute value from the current start tag.
        Specified by:
        getAttributeValue in interface IXMLReader
        Parameters:
        index - attribute index
        Returns:
        value text
      • getAttributeValue

        public java.lang.String getAttributeValue​(java.lang.String ns,
                                                  java.lang.String name)
        Description copied from interface: IXMLReader
        Get an attribute value from the current start tag.
        Specified by:
        getAttributeValue in interface IXMLReader
        Parameters:
        ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
        name - attribute name expected
        Returns:
        attribute value text, or null if missing
      • getText

        public java.lang.String getText()
        Description copied from interface: IXMLReader
        Get current text. When positioned on a TEXT event this returns the actual text; for CDSECT it returns the text inside the CDATA section; for COMMENT, DOCDECL, or PROCESSING_INSTRUCTION it returns the text inside the structure.
        Specified by:
        getText in interface IXMLReader
        Returns:
        text for current event
      • getNestingDepth

        public int getNestingDepth()
        Description copied from interface: IXMLReader
        Get current element nesting depth. The returned depth always includes the current start or end tag (if positioned on a start or end tag).
        Specified by:
        getNestingDepth in interface IXMLReader
        Returns:
        element nesting depth
      • getNamespaceCount

        public int getNamespaceCount​(int depth)
        Description copied from interface: IXMLReader
        Get number of namespace declarations active at depth.
        Specified by:
        getNamespaceCount in interface IXMLReader
        Parameters:
        depth - element nesting depth
        Returns:
        number of namespaces active at depth
      • getNamespaceUri

        public java.lang.String getNamespaceUri​(int index)
        Description copied from interface: IXMLReader
        Get namespace URI.
        Specified by:
        getNamespaceUri in interface IXMLReader
        Parameters:
        index - declaration index
        Returns:
        namespace URI
      • getNamespacePrefix

        public java.lang.String getNamespacePrefix​(int index)
        Description copied from interface: IXMLReader
        Get namespace prefix.
        Specified by:
        getNamespacePrefix in interface IXMLReader
        Parameters:
        index - declaration index
        Returns:
        namespace prefix, null if a default namespace
      • getDocumentName

        public java.lang.String getDocumentName()
        Description copied from interface: IXMLReader
        Get document name.
        Specified by:
        getDocumentName in interface IXMLReader
        Returns:
        document name, null if not known
      • getLineNumber

        public int getLineNumber()
        Description copied from interface: IXMLReader
        Get current source line number.
        Specified by:
        getLineNumber in interface IXMLReader
        Returns:
        line number from source document, -1 if line number information not available
      • getColumnNumber

        public int getColumnNumber()
        Description copied from interface: IXMLReader
        Get current source column number.
        Specified by:
        getColumnNumber in interface IXMLReader
        Returns:
        column number from source document, -1 if column number information not available
      • getNamespace

        public java.lang.String getNamespace​(java.lang.String prefix)
        Description copied from interface: IXMLReader
        Get namespace URI associated with prefix.
        Specified by:
        getNamespace in interface IXMLReader
        Parameters:
        prefix - namespace prefix to be matched (null for default namespace)
        Returns:
        associated URI (null if prefix not defined)
      • getInputEncoding

        public java.lang.String getInputEncoding()
        Description copied from interface: IXMLReader
        Return the input encoding, if known. This is only valid after parsing of a document has been started.
        Specified by:
        getInputEncoding in interface IXMLReader
        Returns:
        input encoding (null if unknown)
      • isNamespaceAware

        public boolean isNamespaceAware()
        Description copied from interface: IXMLReader
        Return namespace processing flag.
        Specified by:
        isNamespaceAware in interface IXMLReader
        Returns:
        namespace processing flag (true if namespaces are processed by reader, false if not)