public class StreamReaderBufferProcessor extends AbstractProcessor implements org.jvnet.staxex.XMLStreamReaderEx
XMLStreamBuffer
that reads the XML infoset as
XMLStreamReader
.
Because of XMLStreamReader
design, this processor always produce
a full document infoset, even if the buffer just contains a fragment.
When XMLStreamBuffer
contains a multiple tree (AKA "forest"),
XMLStreamReader
will behave as if there are multiple root elements
(so you'll see XMLStreamConstants.START_ELEMENT
event where you'd normally expect
XMLStreamConstants.END_DOCUMENT
.)
Modifier and Type | Class and Description |
---|---|
private class |
StreamReaderBufferProcessor.CharSequenceImpl |
private class |
StreamReaderBufferProcessor.DummyLocation |
private class |
StreamReaderBufferProcessor.ElementStackEntry |
private class |
StreamReaderBufferProcessor.InternalNamespaceContext |
Modifier and Type | Field and Description |
---|---|
protected AttributesHolder |
_attributeCache
Holder of the attributes.
|
protected char[] |
_characters |
protected java.lang.CharSequence |
_charSequence |
private int |
_completionState
True if processing is complete.
|
protected int |
_depth
The element depth that we are in.
|
protected int |
_eventType |
protected int |
_namespaceAIIsEnd |
protected java.lang.String[] |
_namespaceAIIsNamespaceName |
protected java.lang.String[] |
_namespaceAIIsPrefix
Namespace prefixes.
|
protected StreamReaderBufferProcessor.InternalNamespaceContext |
_nsCtx |
protected java.lang.String |
_piData |
protected java.lang.String |
_piTarget |
protected StreamReaderBufferProcessor.ElementStackEntry[] |
_stack |
protected StreamReaderBufferProcessor.ElementStackEntry |
_stackTop
The top-most active entry of the
_stack . |
protected int |
_textLen |
protected int |
_textOffset |
private static int |
CACHE_SIZE |
private static int |
COMPLETED
The parser has reported the
XMLStreamConstants.END_DOCUMENT event,
so we are really done parsing. |
private static int |
PARSING
The parser is in the middle of parsing a document,
with no end in sight.
|
private static int |
PENDING_END_DOCUMENT
The parser has already reported the
XMLStreamConstants.END_ELEMENT ,
and we are parsing a fragment. |
_buffer, _fragmentMode, _qNameBuffer, _stringInterningFeature, _treeCount, STATE_ATTRIBUTE_LN, STATE_ATTRIBUTE_LN_OBJECT, STATE_ATTRIBUTE_P_U_LN, STATE_ATTRIBUTE_P_U_LN_OBJECT, STATE_ATTRIBUTE_U_LN, STATE_ATTRIBUTE_U_LN_OBJECT, STATE_ATTRIBUTE_U_LN_QN, STATE_ATTRIBUTE_U_LN_QN_OBJECT, STATE_COMMENT_AS_CHAR_ARRAY_COPY, STATE_COMMENT_AS_CHAR_ARRAY_MEDIUM, STATE_COMMENT_AS_CHAR_ARRAY_SMALL, STATE_COMMENT_AS_STRING, STATE_DOCUMENT, STATE_DOCUMENT_FRAGMENT, STATE_ELEMENT_LN, STATE_ELEMENT_P_U_LN, STATE_ELEMENT_U_LN, STATE_ELEMENT_U_LN_QN, STATE_END, STATE_ILLEGAL, STATE_NAMESPACE_ATTRIBUTE, STATE_NAMESPACE_ATTRIBUTE_P, STATE_NAMESPACE_ATTRIBUTE_P_U, STATE_NAMESPACE_ATTRIBUTE_U, STATE_PROCESSING_INSTRUCTION, STATE_TEXT_AS_CHAR_ARRAY_COPY, STATE_TEXT_AS_CHAR_ARRAY_MEDIUM, STATE_TEXT_AS_CHAR_ARRAY_SMALL, STATE_TEXT_AS_OBJECT, STATE_TEXT_AS_STRING
_contentCharactersBuffer, _contentCharactersBufferPtr, _contentObjects, _contentObjectsPtr, _currentContentCharactersBufferFragment, _currentContentObjectFragment, _currentStructureFragment, _currentStructureStringFragment, _structure, _structurePtr, _structureStrings, _structureStringsPtr, CHAR_ARRAY_LENGTH_MEDIUM, CHAR_ARRAY_LENGTH_MEDIUM_SIZE, CHAR_ARRAY_LENGTH_SMALL, CHAR_ARRAY_LENGTH_SMALL_SIZE, CONTENT_TYPE_CHAR_ARRAY, CONTENT_TYPE_CHAR_ARRAY_COPY, CONTENT_TYPE_OBJECT, CONTENT_TYPE_STRING, FLAG_DOCUMENT_FRAGMENT, FLAG_PREFIX, FLAG_QUALIFIED_NAME, FLAG_URI, T_ATTRIBUTE, T_ATTRIBUTE_LN, T_ATTRIBUTE_LN_OBJECT, T_ATTRIBUTE_P_U_LN, T_ATTRIBUTE_P_U_LN_OBJECT, T_ATTRIBUTE_U_LN, T_ATTRIBUTE_U_LN_OBJECT, T_ATTRIBUTE_U_LN_QN, T_ATTRIBUTE_U_LN_QN_OBJECT, T_COMMENT, T_COMMENT_AS_CHAR_ARRAY, T_COMMENT_AS_CHAR_ARRAY_COPY, T_COMMENT_AS_CHAR_ARRAY_MEDIUM, T_COMMENT_AS_CHAR_ARRAY_SMALL, T_COMMENT_AS_STRING, T_DOCUMENT, T_DOCUMENT_FRAGMENT, T_ELEMENT, T_ELEMENT_LN, T_ELEMENT_P_U_LN, T_ELEMENT_U_LN, T_ELEMENT_U_LN_QN, T_END, T_END_OF_BUFFER, T_NAMESPACE_ATTRIBUTE, T_NAMESPACE_ATTRIBUTE_P, T_NAMESPACE_ATTRIBUTE_P_U, T_NAMESPACE_ATTRIBUTE_U, T_PROCESSING_INSTRUCTION, T_TEXT, T_TEXT_AS_CHAR_ARRAY, T_TEXT_AS_CHAR_ARRAY_COPY, T_TEXT_AS_CHAR_ARRAY_MEDIUM, T_TEXT_AS_CHAR_ARRAY_SMALL, T_TEXT_AS_OBJECT, T_TEXT_AS_STRING, T_UNEXPANDED_ENTITY_REFERENCE, TYPE_MASK, VALUE_TYPE_OBJECT, VALUE_TYPE_STRING
Constructor and Description |
---|
StreamReaderBufferProcessor() |
StreamReaderBufferProcessor(XMLStreamBuffer buffer) |
Modifier and Type | Method and Description |
---|---|
void |
close() |
private static java.lang.String |
fixEmptyString(java.lang.String s) |
private static java.lang.String |
fixNull(java.lang.String s) |
int |
getAttributeCount() |
java.lang.String |
getAttributeLocalName(int index) |
javax.xml.namespace.QName |
getAttributeName(int index) |
java.lang.String |
getAttributeNamespace(int index) |
java.lang.String |
getAttributePrefix(int index) |
java.lang.String |
getAttributeType(int index) |
java.lang.String |
getAttributeValue(int index) |
java.lang.String |
getAttributeValue(java.lang.String namespaceURI,
java.lang.String localName) |
java.lang.String |
getCharacterEncodingScheme() |
java.lang.String |
getElementText() |
java.lang.String |
getElementText(boolean startElementRead) |
java.lang.String |
getElementTextTrim() |
java.lang.String |
getEncoding() |
int |
getEventType() |
java.lang.String |
getLocalName() |
javax.xml.stream.Location |
getLocation() |
javax.xml.namespace.QName |
getName() |
org.jvnet.staxex.NamespaceContextEx |
getNamespaceContext() |
int |
getNamespaceCount() |
java.lang.String |
getNamespacePrefix(int index) |
java.lang.String |
getNamespaceURI() |
java.lang.String |
getNamespaceURI(int index) |
java.lang.String |
getNamespaceURI(java.lang.String prefix) |
java.lang.CharSequence |
getPCDATA() |
java.lang.String |
getPIData() |
java.lang.String |
getPITarget() |
java.lang.String |
getPrefix() |
java.lang.Object |
getProperty(java.lang.String name) |
java.lang.String |
getText() |
char[] |
getTextCharacters() |
int |
getTextCharacters(int sourceStart,
char[] target,
int targetStart,
int length) |
int |
getTextLength() |
int |
getTextStart() |
java.lang.String |
getVersion() |
boolean |
hasName() |
boolean |
hasNext() |
boolean |
hasText() |
boolean |
isAttributeSpecified(int index) |
boolean |
isCharacters() |
boolean |
isEndElement() |
private boolean |
isInscope(int depth) |
boolean |
isStandalone() |
boolean |
isStartElement() |
boolean |
isWhiteSpace() |
int |
next() |
int |
nextTag() |
int |
nextTag(boolean currentTagRead) |
XMLStreamBuffer |
nextTagAndMark()
Does
nextTag() and if the parser moved to a new start tag,
returns a XMLStreamBufferMark that captures the infoset starting
from the newly discovered element. |
private void |
popElementStack(int depth) |
private void |
processAttributes(int item) |
protected void |
processElement(java.lang.String prefix,
java.lang.String uri,
java.lang.String localName,
boolean inscope) |
private int |
processNamespaceAttributes(int item,
boolean inscope) |
private void |
pushElementStack() |
void |
require(int type,
java.lang.String namespaceURI,
java.lang.String localName) |
private void |
resizeNamespaceAttributes() |
void |
setXMLStreamBuffer(XMLStreamBuffer buffer) |
boolean |
standaloneSet() |
getAIIState, getEIIState, getNIIState, getPrefixFromQName, getQName, peekStructure, readContentCharactersBuffer, readContentCharactersCopy, readContentObject, readContentString, readEiiState, readStructure, readStructure16, readStructureString, setBuffer, setBuffer
private static final int CACHE_SIZE
protected StreamReaderBufferProcessor.ElementStackEntry[] _stack
protected StreamReaderBufferProcessor.ElementStackEntry _stackTop
_stack
.protected int _depth
protected java.lang.String[] _namespaceAIIsPrefix
protected java.lang.String[] _namespaceAIIsNamespaceName
protected int _namespaceAIIsEnd
protected StreamReaderBufferProcessor.InternalNamespaceContext _nsCtx
protected int _eventType
protected AttributesHolder _attributeCache
protected java.lang.CharSequence _charSequence
protected char[] _characters
protected int _textOffset
protected int _textLen
protected java.lang.String _piTarget
protected java.lang.String _piData
private static final int PARSING
private static final int PENDING_END_DOCUMENT
XMLStreamConstants.END_ELEMENT
,
and we are parsing a fragment. We'll report XMLStreamConstants.END_DOCUMENT
next and be done.private static final int COMPLETED
XMLStreamConstants.END_DOCUMENT
event,
so we are really done parsing.private int _completionState
public StreamReaderBufferProcessor()
public StreamReaderBufferProcessor(XMLStreamBuffer buffer) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
public void setXMLStreamBuffer(XMLStreamBuffer buffer) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
public XMLStreamBuffer nextTagAndMark() throws javax.xml.stream.XMLStreamException
nextTag()
and if the parser moved to a new start tag,
returns a XMLStreamBufferMark
that captures the infoset starting
from the newly discovered element.
(Ideally we should have a method that works against the current position,
but the way the data structure is read makes this somewhat difficult.)
This creates a new XMLStreamBufferMark
that shares the underlying
data storage, thus it's fairly efficient.
javax.xml.stream.XMLStreamException
public java.lang.Object getProperty(java.lang.String name)
getProperty
in interface javax.xml.stream.XMLStreamReader
public int next() throws javax.xml.stream.XMLStreamException
next
in interface javax.xml.stream.XMLStreamReader
javax.xml.stream.XMLStreamException
public final void require(int type, java.lang.String namespaceURI, java.lang.String localName) throws javax.xml.stream.XMLStreamException
require
in interface javax.xml.stream.XMLStreamReader
javax.xml.stream.XMLStreamException
public final java.lang.String getElementTextTrim() throws javax.xml.stream.XMLStreamException
getElementTextTrim
in interface org.jvnet.staxex.XMLStreamReaderEx
javax.xml.stream.XMLStreamException
public final java.lang.String getElementText() throws javax.xml.stream.XMLStreamException
getElementText
in interface javax.xml.stream.XMLStreamReader
javax.xml.stream.XMLStreamException
public final java.lang.String getElementText(boolean startElementRead) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
public final int nextTag() throws javax.xml.stream.XMLStreamException
nextTag
in interface javax.xml.stream.XMLStreamReader
javax.xml.stream.XMLStreamException
public final int nextTag(boolean currentTagRead) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
public final boolean hasNext()
hasNext
in interface javax.xml.stream.XMLStreamReader
public void close() throws javax.xml.stream.XMLStreamException
close
in interface javax.xml.stream.XMLStreamReader
javax.xml.stream.XMLStreamException
public final boolean isStartElement()
isStartElement
in interface javax.xml.stream.XMLStreamReader
public final boolean isEndElement()
isEndElement
in interface javax.xml.stream.XMLStreamReader
public final boolean isCharacters()
isCharacters
in interface javax.xml.stream.XMLStreamReader
public final boolean isWhiteSpace()
isWhiteSpace
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getAttributeValue(java.lang.String namespaceURI, java.lang.String localName)
getAttributeValue
in interface javax.xml.stream.XMLStreamReader
public final int getAttributeCount()
getAttributeCount
in interface javax.xml.stream.XMLStreamReader
public final javax.xml.namespace.QName getAttributeName(int index)
getAttributeName
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getAttributeNamespace(int index)
getAttributeNamespace
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getAttributeLocalName(int index)
getAttributeLocalName
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getAttributePrefix(int index)
getAttributePrefix
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getAttributeType(int index)
getAttributeType
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getAttributeValue(int index)
getAttributeValue
in interface javax.xml.stream.XMLStreamReader
public final boolean isAttributeSpecified(int index)
isAttributeSpecified
in interface javax.xml.stream.XMLStreamReader
public final int getNamespaceCount()
getNamespaceCount
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getNamespacePrefix(int index)
getNamespacePrefix
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getNamespaceURI(int index)
getNamespaceURI
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getNamespaceURI(java.lang.String prefix)
getNamespaceURI
in interface javax.xml.stream.XMLStreamReader
public final org.jvnet.staxex.NamespaceContextEx getNamespaceContext()
getNamespaceContext
in interface javax.xml.stream.XMLStreamReader
getNamespaceContext
in interface org.jvnet.staxex.XMLStreamReaderEx
public final int getEventType()
getEventType
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getText()
getText
in interface javax.xml.stream.XMLStreamReader
public final char[] getTextCharacters()
getTextCharacters
in interface javax.xml.stream.XMLStreamReader
public final int getTextStart()
getTextStart
in interface javax.xml.stream.XMLStreamReader
public final int getTextLength()
getTextLength
in interface javax.xml.stream.XMLStreamReader
public final int getTextCharacters(int sourceStart, char[] target, int targetStart, int length) throws javax.xml.stream.XMLStreamException
getTextCharacters
in interface javax.xml.stream.XMLStreamReader
javax.xml.stream.XMLStreamException
public final java.lang.CharSequence getPCDATA()
getPCDATA
in interface org.jvnet.staxex.XMLStreamReaderEx
public final java.lang.String getEncoding()
getEncoding
in interface javax.xml.stream.XMLStreamReader
public final boolean hasText()
hasText
in interface javax.xml.stream.XMLStreamReader
public final javax.xml.stream.Location getLocation()
getLocation
in interface javax.xml.stream.XMLStreamReader
public final boolean hasName()
hasName
in interface javax.xml.stream.XMLStreamReader
public final javax.xml.namespace.QName getName()
getName
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getLocalName()
getLocalName
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getNamespaceURI()
getNamespaceURI
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getPrefix()
getPrefix
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getVersion()
getVersion
in interface javax.xml.stream.XMLStreamReader
public final boolean isStandalone()
isStandalone
in interface javax.xml.stream.XMLStreamReader
public final boolean standaloneSet()
standaloneSet
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getCharacterEncodingScheme()
getCharacterEncodingScheme
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getPITarget()
getPITarget
in interface javax.xml.stream.XMLStreamReader
public final java.lang.String getPIData()
getPIData
in interface javax.xml.stream.XMLStreamReader
protected void processElement(java.lang.String prefix, java.lang.String uri, java.lang.String localName, boolean inscope)
private boolean isInscope(int depth)
private void resizeNamespaceAttributes()
private int processNamespaceAttributes(int item, boolean inscope)
private static java.lang.String fixNull(java.lang.String s)
private void processAttributes(int item)
private void pushElementStack()
private void popElementStack(int depth)
private static java.lang.String fixEmptyString(java.lang.String s)