Class StAXReaderWrapper

java.lang.Object
org.jibx.runtime.impl.StAXReaderWrapper
All Implemented Interfaces:
IXMLReader

public class StAXReaderWrapper extends 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 Details

    • 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 XMLStreamReader m_parser
      Actual parser.
    • m_isNamespaceAware

      final boolean m_isNamespaceAware
      Parser processing namespaces flag.
    • m_docName

      private final 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_inScopeUris

      private GrowableStringArray m_inScopeUris
      Namespace URIs in scope.
    • m_inScopePrefixes

      private GrowableStringArray m_inScopePrefixes
      Namespace prefixes in scope.
    • m_accumulatedText

      private String m_accumulatedText
      Accumulated text for return.
    • m_isProcessingInstruction

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

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

    • StAXReaderWrapper

      public StAXReaderWrapper(XMLStreamReader rdr, 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 Details

    • init

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

      public 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 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 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 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 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 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 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 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 String getAttributeValue(String ns, 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 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 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 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 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 String getNamespace(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 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)