Class BasicStreamReader
- java.lang.Object
-
- com.ctc.wstx.io.WstxInputData
-
- com.ctc.wstx.sr.StreamScanner
-
- com.ctc.wstx.sr.BasicStreamReader
-
- All Implemented Interfaces:
InputConfigFlags
,ParsingErrorMsgs
,InputProblemReporter
,StreamReaderImpl
,XMLStreamConstants
,XMLStreamReader
,org.codehaus.stax2.DTDInfo
,org.codehaus.stax2.LocationInfo
,org.codehaus.stax2.typed.TypedXMLStreamReader
,org.codehaus.stax2.validation.Validatable
,org.codehaus.stax2.XMLStreamReader2
- Direct Known Subclasses:
TypedStreamReader
public abstract class BasicStreamReader extends StreamScanner implements StreamReaderImpl, org.codehaus.stax2.DTDInfo, org.codehaus.stax2.LocationInfo
Partial implementation ofXMLStreamReader2
consisting of all functionality other than DTD-validation-specific parts, and Typed Access API (Stax2 v3.0), which are implemented at sub-classes.- Author:
- Tatu Saloranta
-
-
Field Summary
Fields Modifier and Type Field Description protected static int
MASK_GET_ELEMENT_TEXT
protected static int
MASK_GET_TEXT
This mask covers all types for which basicgetText()
method can be called.protected static int
MASK_GET_TEXT_WITH_WRITER
This mask is used with Stax2 getText() method (one that takes Writer as an argument): accepts even wider range of event types.protected static int
MASK_GET_TEXT_XXX
This mask covers all types for which extendsgetTextXxx
methods can be called; which is less than those for whichgetText()
can be called.protected AttributeCollector
mAttrCollector
Object that stores information about currently accessible attributes.protected boolean
mCfgCoalesceText
protected boolean
mCfgLazyParsing
protected boolean
mCfgReportTextAsChars
protected int
mCheckIndentation
Counter used for determining whether we are to try to heuristically "intern" white space that seems to be used for indentation purposesprotected int
mConfigFlags
Set of locally stored configuration flagsprotected int
mCurrTextLength
Sized of currentTextLength for CDATA, CHARACTERS, WHITESPACE.protected int
mCurrToken
Current state of the stream, ie token value returned bygetEventType()
.protected int
mDocStandalone
Status about "stand-aloneness" of document; set to 'yes'/'no'/'unknown' based on whether there was xml declaration, and if so, whether it had standalone attribute.protected String
mDtdPublicId
Public id of the DTD, if one exists and has been parsed.protected String
mDtdSystemId
System id of the DTD, if one exists and has been parsed.protected InputElementStack
mElementStack
Currently open element treeprotected Map<String,EntityDecl>
mGeneralEntities
Entities parsed from internal/external DTD subsets.protected ReaderCreator
mOwner
Object to notify about shared stuff, such as symbol tables, as well as to query for additional config settings if necessary.protected int
mParseState
Main parsing/tokenization state (STATE_xxx)protected XMLStreamException
mPendingException
Due to the way Stax API does not allow throwing stream exceptions from many methods for which Woodstox would need to throw one (especiallygetText
and its variations), we may need to delay throwing an exception untilnext()
is called next time.protected boolean
mReturnNullForDefaultNamespace
Configuration fromXMLStreamProperties.RETURN_NULL_FOR_DEFAULT_NAMESPACE
protected String
mRootLName
Local name of root element, as dictated by DOCTYPE declaration; null if no DOCTYPE declaration.protected String
mRootPrefix
Prefix of root element, as dictated by DOCTYPE declaration; null if no DOCTYPE declaration, or no root prefixprotected int
mSecondaryToken
Additional information sometimes stored (when generating dummy events in multi-doc mode, for example) temporarily whenmCurrToken
is already populated.protected int
mShortestTextSegment
Minimum number of characters parser can return as partial text segment, IF it's not required to coalesce adjacent text segments.protected boolean
mStDoctypeFound
protected boolean
mStEmptyElem
protected int
mStTextThreshold
Threshold value that defines tokenization state that needs to be achieved to "finish" current logical text segment (which may consist of adjacent CDATA and text segments; or be a complete physical segment; or just even a fragment of such a segment)protected TextBuffer
mTextBuffer
TextBuffer mostly used to collect non-element textual content (text, CDATA, comment content, pi data)protected int
mTokenState
State of the current token; one of M_ - constants from above.protected boolean
mValidateText
Flag that indicates that textual content (CDATA, CHARACTERS) is to be validated within current element's scope.protected int
mVldContent
Mode information needed at this level; mostly to check what kind of textual content (if any) is allowed in current element context.protected int
mWsStatus
Status of current (text) token's "whitespaceness", that is, whether it is or is not all white space.protected static String
sPrefixXml
protected static String
sPrefixXmlns
-
Fields inherited from class com.ctc.wstx.sr.StreamScanner
CHAR_CR_LF_OR_NULL, CHAR_FIRST_PURE_TEXT, CHAR_LOWEST_LEGAL_LOCALNAME_CHAR, INT_CR_LF_OR_NULL, mAllowXml11EscapedCharsInXml10, mCachedEntities, mCfgNsEnabled, mCfgReplaceEntities, mCfgTreatCharRefsAsEntities, mConfig, mCurrDepth, mCurrEntity, mCurrName, mDocInputEncoding, mDocXmlEncoding, mDocXmlVersion, mEntityExpansionCount, mEntityResolver, mInput, mInputTopDepth, mNameBuffer, mNormalizeLFs, mRootInput, mTokenInputCol, mTokenInputRow, mTokenInputTotal
-
Fields inherited from class com.ctc.wstx.io.WstxInputData
CHAR_NULL, CHAR_SPACE, INT_NULL, INT_SPACE, MAX_UNICODE_CHAR, mCurrInputProcessed, mCurrInputRow, mCurrInputRowStart, mInputBuffer, mInputEnd, mInputPtr, mXml11
-
Fields inherited from interface com.ctc.wstx.cfg.InputConfigFlags
CFG_ALLOW_XML11_ESCAPED_CHARS_IN_XML10, CFG_AUTO_CLOSE_INPUT, CFG_CACHE_DTDS, CFG_CACHE_DTDS_BY_PUBLIC_ID, CFG_COALESCE_TEXT, CFG_INTERN_NAMES, CFG_INTERN_NS_URIS, CFG_LAZY_PARSING, CFG_NAMESPACE_AWARE, CFG_NORMALIZE_LFS, CFG_PRESERVE_LOCATION, CFG_REPLACE_ENTITY_REFS, CFG_REPORT_CDATA, CFG_REPORT_PROLOG_WS, CFG_SUPPORT_DTD, CFG_SUPPORT_DTDPP, CFG_SUPPORT_EXTERNAL_ENTITIES, CFG_TREAT_CHAR_REFS_AS_ENTS, CFG_VALIDATE_AGAINST_DTD, CFG_XMLID_TYPING, CFG_XMLID_UNIQ_CHECKS
-
Fields inherited from interface com.ctc.wstx.cfg.ParsingErrorMsgs
SUFFIX_EOF_EXP_NAME, SUFFIX_IN_ATTR_VALUE, SUFFIX_IN_CDATA, SUFFIX_IN_CLOSE_ELEMENT, SUFFIX_IN_COMMENT, SUFFIX_IN_DEF_ATTR_VALUE, SUFFIX_IN_DOC, SUFFIX_IN_DTD, SUFFIX_IN_DTD_EXTERNAL, SUFFIX_IN_DTD_INTERNAL, SUFFIX_IN_ELEMENT, SUFFIX_IN_ENTITY_REF, SUFFIX_IN_EPILOG, SUFFIX_IN_NAME, SUFFIX_IN_PROC_INSTR, SUFFIX_IN_PROLOG, SUFFIX_IN_TEXT, SUFFIX_IN_XML_DECL
-
Fields inherited from interface javax.xml.stream.XMLStreamConstants
ATTRIBUTE, CDATA, CHARACTERS, COMMENT, DTD, END_DOCUMENT, END_ELEMENT, ENTITY_DECLARATION, ENTITY_REFERENCE, NAMESPACE, NOTATION_DECLARATION, PROCESSING_INSTRUCTION, SPACE, START_DOCUMENT, START_ELEMENT
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
BasicStreamReader(InputBootstrapper bs, BranchingReaderSource input, ReaderCreator owner, ReaderConfig cfg, InputElementStack elemStack, boolean forER)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected org.codehaus.stax2.typed.TypedXMLStreamException
_constructTypeException(String msg, String lexicalValue)
protected XMLStreamException
_constructUnexpectedInTyped(int nextToken)
Method called to report a problem withprotected void
checkCData()
protected String
checkKeyword(char c, String expected)
void
close()
Note: as per StAX 1.0 specs, this method does NOT close the underlying input reader.void
closeCompletely()
protected static InputElementStack
createElementStack(ReaderConfig cfg)
protected void
ensureFinishToken()
protected EntityDecl
findEntity(String id, Object arg)
Abstract method for sub-classes to implement, for finding a declared general or parsed entity.protected void
finishDTD(boolean copyContents)
This method gets called to handle remainder of DOCTYPE declaration, essentially the optional internal subset.protected void
finishToken(boolean deferErrors)
Method called to read in contents of the token completely, if not yet read.void
fireSaxCharacterEvents(ContentHandler h)
void
fireSaxCommentEvent(LexicalHandler h)
void
fireSaxEndElement(ContentHandler h)
void
fireSaxPIEvent(ContentHandler h)
void
fireSaxSpaceEvents(ContentHandler h)
void
fireSaxStartElement(ContentHandler h, Attributes attrs)
AttributeCollector
getAttributeCollector()
Method needed by classes (like stream writer implementations) that want to have efficient direct access to attribute collector Object, for optimal attribute name and value access.int
getAttributeCount()
org.codehaus.stax2.AttributeInfo
getAttributeInfo()
String
getAttributeLocalName(int index)
QName
getAttributeName(int index)
String
getAttributeNamespace(int index)
String
getAttributePrefix(int index)
String
getAttributeType(int index)
String
getAttributeValue(int index)
String
getAttributeValue(String nsURI, String localName)
String
getCharacterEncodingScheme()
As per Stax (1.0) specs, needs to return whatever xml declaration claimed encoding is, if any; or null if no xml declaration found.EntityDecl
getCurrentEntityDecl()
int
getDepth()
org.codehaus.stax2.DTDInfo
getDTDInfo()
Since this class implementsDTDInfo
, method can just returnthis
.String
getDTDInternalSubset()
String
getDTDPublicId()
String
getDTDRootName()
String
getDTDSystemId()
String
getElementText()
From StAX specs: Reads the content of a text-only element, an exception is thrown if this is not a text-only element.String
getEncoding()
As per Stax (1.0) specs, needs to return whatever parser determined the encoding was, if it was able to figure it out.long
getEndingByteOffset()
long
getEndingCharOffset()
org.codehaus.stax2.XMLStreamLocation2
getEndLocation()
int
getEventType()
Returns type of the last event returned; or START_DOCUMENT before any events has been explicitly returned.Object
getFeature(String name)
Deprecated.InputElementStack
getInputElementStack()
Method needed by classes (like stream writer implementations) that want to have efficient direct access to element stack implementationString
getLocalName()
Location
getLocation()
Returns location of last properly parsed token; as per StAX specs, apparently needs to be the end of current event, which is the same as the start of the following event (or EOF if that's next).org.codehaus.stax2.LocationInfo
getLocationInfo()
Location information is always accessible, for this reader.QName
getName()
NamespaceContext
getNamespaceContext()
int
getNamespaceCount()
String
getNamespacePrefix(int index)
String
getNamespaceURI()
String
getNamespaceURI(int index)
String
getNamespaceURI(String prefix)
NamespaceContext
getNonTransientNamespaceContext()
String
getPIData()
String
getPITarget()
String
getPrefix()
String
getPrefixedName()
Object
getProcessedDTD()
Note: DTD-handling sub-classes need to override this method.org.codehaus.stax2.validation.DTDValidationSchema
getProcessedDTDSchema()
Sub-class will override this methodObject
getProperty(String name)
long
getStartingByteOffset()
long
getStartingCharOffset()
String
getText()
int
getText(Writer w, boolean preserveContents)
Method similar togetText()
, except that it just uses provided Writer to write all textual content.char[]
getTextCharacters()
int
getTextCharacters(int sourceStart, char[] target, int targetStart, int len)
int
getTextLength()
int
getTextStart()
String
getVersion()
protected int
handleEOF(boolean isProlog)
protected void
handleGreedyEntityProblem(WstxInputSource input)
This problem gets reported if an entity tries to expand to a close tag matching start tag that did not came from the same entity (but from parent).protected void
handleIncompleteEntityProblem(WstxInputSource closing)
protected int
handleMultiDocStart(int nextEvent)
Method called when an event was encountered that indicates document boundary in multi-doc mode.protected void
handleMultiDocXmlDecl()
protected void
handleRootElem(char c)
protected void
handleUndeclaredEntity(String id)
This method gets called if a declaration for an entity was not found in entity expanding mode (enabled by default for xml reader, always enabled for dtd reader).protected boolean
hasConfigFlags(int flags)
boolean
hasName()
boolean
hasNext()
boolean
hasText()
protected void
initValidation()
Method called right before the document root element is handled.boolean
isAttributeSpecified(int index)
boolean
isCharacters()
boolean
isEmptyElement()
boolean
isEndElement()
boolean
isNamespaceAware()
boolean
isPropertySupported(String name)
boolean
isStandalone()
boolean
isStartElement()
boolean
isWhiteSpace()
05-Apr-2004, TSa: Could try to determine status when text is actually read.int
next()
int
nextTag()
protected void
parseQuoted(String name, char quoteChar, TextBuffer tbuf)
Method called to parse quoted xml declaration pseudo-attribute values.protected boolean
readCDataSecondary(int shortestSegment)
protected void
readCoalescedText(int currType, boolean deferErrors)
Method called to read the content of both current CDATA/CHARACTERS events, and all following consequtive events into the text buffer.protected void
readEndElem()
Method called to completely read a close tag, and update element stack appropriately (including checking that tag matches etc).protected boolean
readTextSecondary(int shortestSegment, boolean deferErrors)
protected void
reportInvalidContent(int evtType)
Stub method implemented by validating parsers, to report content that's not valid for current element context.void
require(int type, String nsUri, String localName)
protected void
safeEnsureFinishToken()
protected void
safeFinishToken()
void
setFeature(String name, Object value)
Deprecated.boolean
setProperty(String name, Object value)
org.codehaus.stax2.validation.ValidationProblemHandler
setValidationProblemHandler(org.codehaus.stax2.validation.ValidationProblemHandler h)
void
skipElement()
protected char
skipEquals(String name, String eofMsg)
Method that checks that input following is of form '[S]* '=' [S]*' (as per XML specs, production #25).protected boolean
skipWS(char c)
Method that will skip any white space from input source(s)boolean
standaloneSet()
org.codehaus.stax2.validation.XMLValidator
stopValidatingAgainst(org.codehaus.stax2.validation.XMLValidationSchema schema)
org.codehaus.stax2.validation.XMLValidator
stopValidatingAgainst(org.codehaus.stax2.validation.XMLValidator validator)
protected void
throwNotTextualOrElem(int type)
protected void
throwUnexpectedEOF()
Method called when we get an EOF within content treeorg.codehaus.stax2.validation.XMLValidator
validateAgainst(org.codehaus.stax2.validation.XMLValidationSchema schema)
Object
withStartElement(ElemCallback cb, Location loc)
Method called byDefaultEventAllocator
to get double-indirection necessary for constructing start element events.-
Methods inherited from class com.ctc.wstx.sr.StreamScanner
_reportProblem, _reportProblem, closeAllInput, constructFromIOE, constructLimitViolation, constructNullCharException, constructWfcException, ensureInput, expandBy50Pct, expandEntity, fullyResolveEntity, getConfig, getCurrentInput, getCurrentLocation, getIntEntity, getLastCharLocation, getNameBuffer, getNext, getNextAfterWS, getNextChar, getNextCharAfterWS, getNextCharFromCurrent, getNextInCurrAfterWS, getNextInCurrAfterWS, getSource, getStartLocation, getSystemId, initInputSource, inputInBuffer, loadMore, loadMore, loadMoreFromCurrent, loadMoreFromCurrent, markLF, markLF, parseEntityName, parseFNameForError, parseFullName, parseFullName, parseFullName2, parseLocalName, parseLocalName2, parsePublicId, parseSystemId, parseUntil, peekNext, pushback, reportProblem, reportProblem, reportValidationProblem, reportValidationProblem, reportValidationProblem, reportValidationProblem, reportValidationProblem, resolveCharOnlyEntity, resolveNonCharEntity, resolveSimpleEntity, skipCRLF, skipFullName, throwFromIOE, throwFromStrE, throwInvalidSpace, throwInvalidSpace, throwLazyError, throwNullChar, throwNullParent, throwParseError, throwParseError, throwUnexpectedChar, throwUnexpectedEOB, throwUnexpectedEOF, throwWfcException, tokenTypeDesc, verifyLimit
-
Methods inherited from class com.ctc.wstx.io.WstxInputData
copyBufferStateFrom, findIllegalNameChar, findIllegalNmtokenChar, getCharDesc, isNameChar, isNameChar, isNameStartChar, isNameStartChar, isSpaceChar
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.codehaus.stax2.LocationInfo
getCurrentLocation, getStartLocation
-
Methods inherited from interface org.codehaus.stax2.typed.TypedXMLStreamReader
getAttributeAs, getAttributeAsArray, getAttributeAsBinary, getAttributeAsBinary, getAttributeAsBoolean, getAttributeAsDecimal, getAttributeAsDouble, getAttributeAsDoubleArray, getAttributeAsFloat, getAttributeAsFloatArray, getAttributeAsInt, getAttributeAsIntArray, getAttributeAsInteger, getAttributeAsLong, getAttributeAsLongArray, getAttributeAsQName, getAttributeIndex, getElementAs, getElementAsBinary, getElementAsBinary, getElementAsBoolean, getElementAsDecimal, getElementAsDouble, getElementAsFloat, getElementAsInt, getElementAsInteger, getElementAsLong, getElementAsQName, readElementAsArray, readElementAsBinary, readElementAsBinary, readElementAsDoubleArray, readElementAsFloatArray, readElementAsIntArray, readElementAsLongArray
-
-
-
-
Field Detail
-
MASK_GET_TEXT
protected static final int MASK_GET_TEXT
This mask covers all types for which basicgetText()
method can be called.- See Also:
- Constant Field Values
-
MASK_GET_TEXT_XXX
protected static final int MASK_GET_TEXT_XXX
This mask covers all types for which extendsgetTextXxx
methods can be called; which is less than those for whichgetText()
can be called. Specifically,DTD
andENTITY_REFERENCE
types do not support these extended- See Also:
- Constant Field Values
-
MASK_GET_TEXT_WITH_WRITER
protected static final int MASK_GET_TEXT_WITH_WRITER
This mask is used with Stax2 getText() method (one that takes Writer as an argument): accepts even wider range of event types.- See Also:
- Constant Field Values
-
MASK_GET_ELEMENT_TEXT
protected static final int MASK_GET_ELEMENT_TEXT
- See Also:
- Constant Field Values
-
sPrefixXml
protected static final String sPrefixXml
-
sPrefixXmlns
protected static final String sPrefixXmlns
-
mConfigFlags
protected final int mConfigFlags
Set of locally stored configuration flags
-
mCfgCoalesceText
protected final boolean mCfgCoalesceText
-
mCfgReportTextAsChars
protected final boolean mCfgReportTextAsChars
-
mCfgLazyParsing
protected final boolean mCfgLazyParsing
-
mShortestTextSegment
protected final int mShortestTextSegment
Minimum number of characters parser can return as partial text segment, IF it's not required to coalesce adjacent text segments.
-
mOwner
protected final ReaderCreator mOwner
Object to notify about shared stuff, such as symbol tables, as well as to query for additional config settings if necessary.
-
mDocStandalone
protected int mDocStandalone
Status about "stand-aloneness" of document; set to 'yes'/'no'/'unknown' based on whether there was xml declaration, and if so, whether it had standalone attribute.
-
mRootPrefix
protected String mRootPrefix
Prefix of root element, as dictated by DOCTYPE declaration; null if no DOCTYPE declaration, or no root prefix
-
mRootLName
protected String mRootLName
Local name of root element, as dictated by DOCTYPE declaration; null if no DOCTYPE declaration.
-
mDtdPublicId
protected String mDtdPublicId
Public id of the DTD, if one exists and has been parsed.
-
mDtdSystemId
protected String mDtdSystemId
System id of the DTD, if one exists and has been parsed.
-
mTextBuffer
protected final TextBuffer mTextBuffer
TextBuffer mostly used to collect non-element textual content (text, CDATA, comment content, pi data)
-
mElementStack
protected final InputElementStack mElementStack
Currently open element tree
-
mAttrCollector
protected final AttributeCollector mAttrCollector
Object that stores information about currently accessible attributes.
-
mStDoctypeFound
protected boolean mStDoctypeFound
-
mTokenState
protected int mTokenState
State of the current token; one of M_ - constants from above.Initially set to fully tokenized, since it's the virtual START_DOCUMENT event that we fully know by now (parsed by bootstrapper)
-
mStTextThreshold
protected final int mStTextThreshold
Threshold value that defines tokenization state that needs to be achieved to "finish" current logical text segment (which may consist of adjacent CDATA and text segments; or be a complete physical segment; or just even a fragment of such a segment)
-
mCurrTextLength
protected int mCurrTextLength
Sized of currentTextLength for CDATA, CHARACTERS, WHITESPACE. When segmenting, this records to size of all the segments so we can track if the text length has exceeded limits.
-
mStEmptyElem
protected boolean mStEmptyElem
-
mParseState
protected int mParseState
Main parsing/tokenization state (STATE_xxx)
-
mCurrToken
protected int mCurrToken
Current state of the stream, ie token value returned bygetEventType()
. Needs to be initialized to START_DOCUMENT, since that's the state it starts in.
-
mSecondaryToken
protected int mSecondaryToken
Additional information sometimes stored (when generating dummy events in multi-doc mode, for example) temporarily whenmCurrToken
is already populated.
-
mWsStatus
protected int mWsStatus
Status of current (text) token's "whitespaceness", that is, whether it is or is not all white space.
-
mValidateText
protected boolean mValidateText
Flag that indicates that textual content (CDATA, CHARACTERS) is to be validated within current element's scope. Enabled if one of validators returnsXMLValidator.CONTENT_ALLOW_VALIDATABLE_TEXT
, and will prevent lazy parsing of text.
-
mCheckIndentation
protected int mCheckIndentation
Counter used for determining whether we are to try to heuristically "intern" white space that seems to be used for indentation purposes
-
mPendingException
protected XMLStreamException mPendingException
Due to the way Stax API does not allow throwing stream exceptions from many methods for which Woodstox would need to throw one (especiallygetText
and its variations), we may need to delay throwing an exception untilnext()
is called next time. If so, this variable holds the pending stream exception.
-
mGeneralEntities
protected Map<String,EntityDecl> mGeneralEntities
Entities parsed from internal/external DTD subsets. Although it will remain null for this class, extended classes make use of it, plus, to be able to share some of entity resolution code, instance is left here even though it semantically belongs to the sub-class.
-
mVldContent
protected int mVldContent
Mode information needed at this level; mostly to check what kind of textual content (if any) is allowed in current element context. Constants come fromXMLValidator
, (likeXMLValidator.CONTENT_ALLOW_VALIDATABLE_TEXT
). Only used inside tree; ignored for prolog/epilog (which have straight-forward static rules).
-
mReturnNullForDefaultNamespace
protected boolean mReturnNullForDefaultNamespace
Configuration fromXMLStreamProperties.RETURN_NULL_FOR_DEFAULT_NAMESPACE
- Since:
- 4.1.2
-
-
Constructor Detail
-
BasicStreamReader
protected BasicStreamReader(InputBootstrapper bs, BranchingReaderSource input, ReaderCreator owner, ReaderConfig cfg, InputElementStack elemStack, boolean forER) throws XMLStreamException
- Parameters:
elemStack
- Input element stack to use; if null, will create instance locally.forER
- Override indicator; if true, this stream reader will be used by an event reader, and should modify some of the base config settings appropriately. If false, configuration settings are to be used as is.- Throws:
XMLStreamException
-
-
Method Detail
-
createElementStack
protected static InputElementStack createElementStack(ReaderConfig cfg)
-
getCharacterEncodingScheme
public String getCharacterEncodingScheme()
As per Stax (1.0) specs, needs to return whatever xml declaration claimed encoding is, if any; or null if no xml declaration found.Note: method name is rather confusing (compare to
getEncoding()
).- Specified by:
getCharacterEncodingScheme
in interfaceXMLStreamReader
-
getEncoding
public String getEncoding()
As per Stax (1.0) specs, needs to return whatever parser determined the encoding was, if it was able to figure it out. If not (there are cases where this can not be found; specifically when being passed aReader
), it should return null.- Specified by:
getEncoding
in interfaceXMLStreamReader
-
getVersion
public String getVersion()
- Specified by:
getVersion
in interfaceXMLStreamReader
-
isStandalone
public boolean isStandalone()
- Specified by:
isStandalone
in interfaceXMLStreamReader
-
standaloneSet
public boolean standaloneSet()
- Specified by:
standaloneSet
in interfaceXMLStreamReader
-
getProperty
public Object getProperty(String name)
- Specified by:
getProperty
in interfaceXMLStreamReader
-
getAttributeCount
public int getAttributeCount()
- Specified by:
getAttributeCount
in interfaceXMLStreamReader
-
getAttributeLocalName
public String getAttributeLocalName(int index)
- Specified by:
getAttributeLocalName
in interfaceXMLStreamReader
-
getAttributeName
public QName getAttributeName(int index)
- Specified by:
getAttributeName
in interfaceXMLStreamReader
-
getAttributeNamespace
public String getAttributeNamespace(int index)
- Specified by:
getAttributeNamespace
in interfaceXMLStreamReader
-
getAttributePrefix
public String getAttributePrefix(int index)
- Specified by:
getAttributePrefix
in interfaceXMLStreamReader
-
getAttributeType
public String getAttributeType(int index)
- Specified by:
getAttributeType
in interfaceXMLStreamReader
-
getAttributeValue
public String getAttributeValue(int index)
- Specified by:
getAttributeValue
in interfaceXMLStreamReader
-
getAttributeValue
public String getAttributeValue(String nsURI, String localName)
- Specified by:
getAttributeValue
in interfaceXMLStreamReader
-
getElementText
public String getElementText() throws XMLStreamException
From StAX specs:Reads the content of a text-only element, an exception is thrown if this is not a text-only element. Regardless of value of javax.xml.stream.isCoalescing this method always returns coalesced content.
Precondition: the current event is START_ELEMENT.
Postcondition: the current event is the corresponding END_ELEMENT.- Specified by:
getElementText
in interfaceXMLStreamReader
- Throws:
XMLStreamException
-
getEventType
public int getEventType()
Returns type of the last event returned; or START_DOCUMENT before any events has been explicitly returned.- Specified by:
getEventType
in interfaceXMLStreamReader
-
getLocalName
public String getLocalName()
- Specified by:
getLocalName
in interfaceXMLStreamReader
-
getName
public QName getName()
- Specified by:
getName
in interfaceXMLStreamReader
-
getNamespaceContext
public NamespaceContext getNamespaceContext()
- Specified by:
getNamespaceContext
in interfaceXMLStreamReader
-
getNamespaceCount
public int getNamespaceCount()
- Specified by:
getNamespaceCount
in interfaceXMLStreamReader
-
getNamespacePrefix
public String getNamespacePrefix(int index)
- Specified by:
getNamespacePrefix
in interfaceXMLStreamReader
-
getNamespaceURI
public String getNamespaceURI()
- Specified by:
getNamespaceURI
in interfaceXMLStreamReader
-
getNamespaceURI
public String getNamespaceURI(int index)
- Specified by:
getNamespaceURI
in interfaceXMLStreamReader
-
getNamespaceURI
public String getNamespaceURI(String prefix)
- Specified by:
getNamespaceURI
in interfaceXMLStreamReader
-
getPIData
public String getPIData()
- Specified by:
getPIData
in interfaceXMLStreamReader
-
getPITarget
public String getPITarget()
- Specified by:
getPITarget
in interfaceXMLStreamReader
-
getPrefix
public String getPrefix()
- Specified by:
getPrefix
in interfaceXMLStreamReader
-
getText
public String getText()
- Specified by:
getText
in interfaceXMLStreamReader
-
getTextCharacters
public char[] getTextCharacters()
- Specified by:
getTextCharacters
in interfaceXMLStreamReader
-
getTextCharacters
public int getTextCharacters(int sourceStart, char[] target, int targetStart, int len)
- Specified by:
getTextCharacters
in interfaceXMLStreamReader
-
getTextLength
public int getTextLength()
- Specified by:
getTextLength
in interfaceXMLStreamReader
-
getTextStart
public int getTextStart()
- Specified by:
getTextStart
in interfaceXMLStreamReader
-
hasName
public boolean hasName()
- Specified by:
hasName
in interfaceXMLStreamReader
-
hasNext
public boolean hasNext()
- Specified by:
hasNext
in interfaceXMLStreamReader
-
hasText
public boolean hasText()
- Specified by:
hasText
in interfaceXMLStreamReader
-
isAttributeSpecified
public boolean isAttributeSpecified(int index)
- Specified by:
isAttributeSpecified
in interfaceXMLStreamReader
-
isCharacters
public boolean isCharacters()
- Specified by:
isCharacters
in interfaceXMLStreamReader
-
isEndElement
public boolean isEndElement()
- Specified by:
isEndElement
in interfaceXMLStreamReader
-
isStartElement
public boolean isStartElement()
- Specified by:
isStartElement
in interfaceXMLStreamReader
-
isWhiteSpace
public boolean isWhiteSpace()
05-Apr-2004, TSa: Could try to determine status when text is actually read. That'd prevent double reads... but would it slow down that one reading so that net effect would be negative?
- Specified by:
isWhiteSpace
in interfaceXMLStreamReader
-
require
public void require(int type, String nsUri, String localName) throws XMLStreamException
- Specified by:
require
in interfaceXMLStreamReader
- Throws:
XMLStreamException
-
next
public final int next() throws XMLStreamException
- Specified by:
next
in interfaceXMLStreamReader
- Throws:
XMLStreamException
-
nextTag
public int nextTag() throws XMLStreamException
- Specified by:
nextTag
in interfaceXMLStreamReader
- Throws:
XMLStreamException
-
close
public void close() throws XMLStreamException
Note: as per StAX 1.0 specs, this method does NOT close the underlying input reader. That is, unless the new StAX2 property
XMLInputFactory2.P_AUTO_CLOSE_INPUT
is set to true.- Specified by:
close
in interfaceXMLStreamReader
- Throws:
XMLStreamException
-
getFeature
@Deprecated public Object getFeature(String name)
Deprecated.- Specified by:
getFeature
in interfaceorg.codehaus.stax2.XMLStreamReader2
-
setFeature
@Deprecated public void setFeature(String name, Object value)
Deprecated.- Specified by:
setFeature
in interfaceorg.codehaus.stax2.XMLStreamReader2
-
isPropertySupported
public boolean isPropertySupported(String name)
- Specified by:
isPropertySupported
in interfaceorg.codehaus.stax2.XMLStreamReader2
-
setProperty
public boolean setProperty(String name, Object value)
- Specified by:
setProperty
in interfaceorg.codehaus.stax2.XMLStreamReader2
- Parameters:
name
- Name of the property to setvalue
- Value to set property to.- Returns:
- True, if the specified property was succesfully set to specified value; false if its value was not changed
-
skipElement
public void skipElement() throws XMLStreamException
- Specified by:
skipElement
in interfaceorg.codehaus.stax2.XMLStreamReader2
- Throws:
XMLStreamException
-
getAttributeInfo
public org.codehaus.stax2.AttributeInfo getAttributeInfo() throws XMLStreamException
- Specified by:
getAttributeInfo
in interfaceorg.codehaus.stax2.XMLStreamReader2
- Throws:
XMLStreamException
-
getDTDInfo
public org.codehaus.stax2.DTDInfo getDTDInfo() throws XMLStreamException
Since this class implementsDTDInfo
, method can just returnthis
.- Specified by:
getDTDInfo
in interfaceorg.codehaus.stax2.XMLStreamReader2
- Throws:
XMLStreamException
-
getLocationInfo
public final org.codehaus.stax2.LocationInfo getLocationInfo()
Location information is always accessible, for this reader.- Specified by:
getLocationInfo
in interfaceorg.codehaus.stax2.XMLStreamReader2
-
getText
public int getText(Writer w, boolean preserveContents) throws IOException, XMLStreamException
Method similar togetText()
, except that it just uses provided Writer to write all textual content. For further optimization, it may also be allowed to do true pass-through, thus possibly avoiding one temporary copy of the data.TODO: try to optimize to allow completely streaming pass-through: currently will still read all data in memory buffers before outputting
- Specified by:
getText
in interfaceorg.codehaus.stax2.XMLStreamReader2
- Parameters:
w
- Writer to use for writing textual contentspreserveContents
- If true, reader has to preserve contents so that further calls togetText
will return proper conntets. If false, reader is allowed to skip creation of such copies: this can improve performance, but it also means that further calls togetText
is not guaranteed to return meaningful data.- Returns:
- Number of characters written to the reader
- Throws:
IOException
XMLStreamException
-
getDepth
public int getDepth()
- Specified by:
getDepth
in interfaceorg.codehaus.stax2.XMLStreamReader2
- Returns:
- Number of open elements in the stack; 0 when parser is in prolog/epilog, 1 inside root element and so on.
-
isEmptyElement
public boolean isEmptyElement() throws XMLStreamException
- Specified by:
isEmptyElement
in interfaceorg.codehaus.stax2.XMLStreamReader2
- Returns:
- True, if cursor points to a start or end element that is constructed from 'empty' element (ends with '/>'); false otherwise.
- Throws:
XMLStreamException
-
getNonTransientNamespaceContext
public NamespaceContext getNonTransientNamespaceContext()
- Specified by:
getNonTransientNamespaceContext
in interfaceorg.codehaus.stax2.XMLStreamReader2
-
getPrefixedName
public String getPrefixedName()
- Specified by:
getPrefixedName
in interfaceorg.codehaus.stax2.XMLStreamReader2
-
closeCompletely
public void closeCompletely() throws XMLStreamException
- Specified by:
closeCompletely
in interfaceorg.codehaus.stax2.XMLStreamReader2
- Throws:
XMLStreamException
-
getProcessedDTD
public Object getProcessedDTD()
Note: DTD-handling sub-classes need to override this method.
- Specified by:
getProcessedDTD
in interfaceorg.codehaus.stax2.DTDInfo
-
getDTDRootName
public String getDTDRootName()
- Specified by:
getDTDRootName
in interfaceorg.codehaus.stax2.DTDInfo
-
getDTDPublicId
public String getDTDPublicId()
- Specified by:
getDTDPublicId
in interfaceorg.codehaus.stax2.DTDInfo
-
getDTDSystemId
public String getDTDSystemId()
- Specified by:
getDTDSystemId
in interfaceorg.codehaus.stax2.DTDInfo
-
getDTDInternalSubset
public String getDTDInternalSubset()
- Specified by:
getDTDInternalSubset
in interfaceorg.codehaus.stax2.DTDInfo
- Returns:
- Internal subset portion of the DOCTYPE declaration, if any; empty String if none
-
getProcessedDTDSchema
public org.codehaus.stax2.validation.DTDValidationSchema getProcessedDTDSchema()
Sub-class will override this method- Specified by:
getProcessedDTDSchema
in interfaceorg.codehaus.stax2.DTDInfo
-
getStartingByteOffset
public long getStartingByteOffset()
- Specified by:
getStartingByteOffset
in interfaceorg.codehaus.stax2.LocationInfo
-
getStartingCharOffset
public long getStartingCharOffset()
- Specified by:
getStartingCharOffset
in interfaceorg.codehaus.stax2.LocationInfo
-
getEndingByteOffset
public long getEndingByteOffset() throws XMLStreamException
- Specified by:
getEndingByteOffset
in interfaceorg.codehaus.stax2.LocationInfo
- Throws:
XMLStreamException
-
getEndingCharOffset
public long getEndingCharOffset() throws XMLStreamException
- Specified by:
getEndingCharOffset
in interfaceorg.codehaus.stax2.LocationInfo
- Throws:
XMLStreamException
-
getLocation
public final Location getLocation()
Description copied from class:StreamScanner
Returns location of last properly parsed token; as per StAX specs, apparently needs to be the end of current event, which is the same as the start of the following event (or EOF if that's next).- Specified by:
getLocation
in interfaceInputProblemReporter
- Specified by:
getLocation
in interfaceorg.codehaus.stax2.LocationInfo
- Specified by:
getLocation
in interfaceXMLStreamReader
- Specified by:
getLocation
in classStreamScanner
-
getEndLocation
public final org.codehaus.stax2.XMLStreamLocation2 getEndLocation() throws XMLStreamException
- Specified by:
getEndLocation
in interfaceorg.codehaus.stax2.LocationInfo
- Throws:
XMLStreamException
-
validateAgainst
public org.codehaus.stax2.validation.XMLValidator validateAgainst(org.codehaus.stax2.validation.XMLValidationSchema schema) throws XMLStreamException
- Specified by:
validateAgainst
in interfaceorg.codehaus.stax2.validation.Validatable
- Throws:
XMLStreamException
-
stopValidatingAgainst
public org.codehaus.stax2.validation.XMLValidator stopValidatingAgainst(org.codehaus.stax2.validation.XMLValidationSchema schema) throws XMLStreamException
- Specified by:
stopValidatingAgainst
in interfaceorg.codehaus.stax2.validation.Validatable
- Throws:
XMLStreamException
-
stopValidatingAgainst
public org.codehaus.stax2.validation.XMLValidator stopValidatingAgainst(org.codehaus.stax2.validation.XMLValidator validator) throws XMLStreamException
- Specified by:
stopValidatingAgainst
in interfaceorg.codehaus.stax2.validation.Validatable
- Throws:
XMLStreamException
-
setValidationProblemHandler
public org.codehaus.stax2.validation.ValidationProblemHandler setValidationProblemHandler(org.codehaus.stax2.validation.ValidationProblemHandler h)
- Specified by:
setValidationProblemHandler
in interfaceorg.codehaus.stax2.validation.Validatable
-
getCurrentEntityDecl
public EntityDecl getCurrentEntityDecl()
- Specified by:
getCurrentEntityDecl
in interfaceStreamReaderImpl
-
withStartElement
public Object withStartElement(ElemCallback cb, Location loc)
Method called byDefaultEventAllocator
to get double-indirection necessary for constructing start element events.- Specified by:
withStartElement
in interfaceStreamReaderImpl
- Returns:
- Null, if stream does not point to start element; whatever callback returns otherwise.
-
isNamespaceAware
public boolean isNamespaceAware()
- Specified by:
isNamespaceAware
in interfaceStreamReaderImpl
-
getInputElementStack
public InputElementStack getInputElementStack()
Method needed by classes (like stream writer implementations) that want to have efficient direct access to element stack implementation- Specified by:
getInputElementStack
in interfaceStreamReaderImpl
-
getAttributeCollector
public AttributeCollector getAttributeCollector()
Method needed by classes (like stream writer implementations) that want to have efficient direct access to attribute collector Object, for optimal attribute name and value access.- Specified by:
getAttributeCollector
in interfaceStreamReaderImpl
-
fireSaxStartElement
public void fireSaxStartElement(ContentHandler h, Attributes attrs) throws SAXException
- Throws:
SAXException
-
fireSaxEndElement
public void fireSaxEndElement(ContentHandler h) throws SAXException
- Throws:
SAXException
-
fireSaxCharacterEvents
public void fireSaxCharacterEvents(ContentHandler h) throws XMLStreamException, SAXException
- Throws:
XMLStreamException
SAXException
-
fireSaxSpaceEvents
public void fireSaxSpaceEvents(ContentHandler h) throws XMLStreamException, SAXException
- Throws:
XMLStreamException
SAXException
-
fireSaxCommentEvent
public void fireSaxCommentEvent(LexicalHandler h) throws XMLStreamException, SAXException
- Throws:
XMLStreamException
SAXException
-
fireSaxPIEvent
public void fireSaxPIEvent(ContentHandler h) throws XMLStreamException, SAXException
- Throws:
XMLStreamException
SAXException
-
hasConfigFlags
protected final boolean hasConfigFlags(int flags)
-
checkKeyword
protected String checkKeyword(char c, String expected) throws XMLStreamException
- Returns:
- Null, if keyword matches ok; String that contains erroneous keyword if not.
- Throws:
XMLStreamException
-
checkCData
protected void checkCData() throws XMLStreamException
- Throws:
XMLStreamException
-
handleRootElem
protected void handleRootElem(char c) throws XMLStreamException
- Throws:
XMLStreamException
-
initValidation
protected void initValidation() throws XMLStreamException
Method called right before the document root element is handled. The default implementation is empty; validating stream readers should override the method and do whatever initialization is necessary- Throws:
XMLStreamException
-
handleEOF
protected int handleEOF(boolean isProlog) throws XMLStreamException
- Throws:
XMLStreamException
-
handleMultiDocStart
protected int handleMultiDocStart(int nextEvent)
Method called when an event was encountered that indicates document boundary in multi-doc mode. Needs to trigger dummy END_DOCUMENT/START_DOCUMENT event combination, followed by the handling of the original event.- Returns:
- Event type to return
-
handleMultiDocXmlDecl
protected void handleMultiDocXmlDecl() throws XMLStreamException
- Throws:
XMLStreamException
-
skipEquals
protected final char skipEquals(String name, String eofMsg) throws XMLStreamException
Method that checks that input following is of form '[S]* '=' [S]*' (as per XML specs, production #25). Will push back non-white space characters as necessary, in case no equals char is encountered.- Throws:
XMLStreamException
-
parseQuoted
protected final void parseQuoted(String name, char quoteChar, TextBuffer tbuf) throws XMLStreamException
Method called to parse quoted xml declaration pseudo-attribute values. Works similar to attribute value parsing, except no entities can be included, and in general need not be as picky (since caller is to verify contents). One exception is that we do check for linefeeds and lt chars, since they generally would indicate problems and are useful to catch early on (can happen if a quote is missed etc)Note: since it'll be called at most 3 times per document, this method is not optimized too much.
- Throws:
XMLStreamException
-
finishDTD
protected void finishDTD(boolean copyContents) throws XMLStreamException
This method gets called to handle remainder of DOCTYPE declaration, essentially the optional internal subset. This class implements the basic "ignore it" functionality, but can optionally still store copy of the contents to the read buffer.NOTE: Since this default implementation will be overridden by some sub-classes, make sure you do NOT change the method signature.
- Parameters:
copyContents
- If true, will copy contents of the internal subset of DOCTYPE declaration in the text buffer; if false, will just completely ignore the subset (if one found).- Throws:
XMLStreamException
-
readEndElem
protected final void readEndElem() throws XMLStreamException
Method called to completely read a close tag, and update element stack appropriately (including checking that tag matches etc).- Throws:
XMLStreamException
-
ensureFinishToken
protected void ensureFinishToken() throws XMLStreamException
- Throws:
XMLStreamException
-
safeEnsureFinishToken
protected void safeEnsureFinishToken()
-
safeFinishToken
protected void safeFinishToken()
-
finishToken
protected void finishToken(boolean deferErrors) throws XMLStreamException
Method called to read in contents of the token completely, if not yet read. Generally called when caller needs to access anything other than basic token type (except for elements), text contents or such.- Parameters:
deferErrors
- Flag to enable storing an exception to a variable, instead of immediately throwing it. If true, will just store the exception; if false, will not store, just throw.- Throws:
XMLStreamException
-
readCoalescedText
protected void readCoalescedText(int currType, boolean deferErrors) throws XMLStreamException
Method called to read the content of both current CDATA/CHARACTERS events, and all following consequtive events into the text buffer. At this point the current type is known, prefix (for CDATA) skipped, and initial consequtive contents (if any) read in.- Parameters:
deferErrors
- Flag to enable storing an exception to a variable, instead of immediately throwing it. If true, will just store the exception; if false, will not store, just throw.- Throws:
XMLStreamException
-
readCDataSecondary
protected boolean readCDataSecondary(int shortestSegment) throws XMLStreamException
- Returns:
- True if the whole CData section was completely read (we hit the end marker); false if a shorter segment was returned.
- Throws:
XMLStreamException
-
readTextSecondary
protected final boolean readTextSecondary(int shortestSegment, boolean deferErrors) throws XMLStreamException
- Parameters:
deferErrors
- Flag to enable storing an exception to a variable, instead of immediately throwing it. If true, will just store the exception; if false, will not store, just throw.- Returns:
- True if the text segment was completely read ('<' was hit, or in non-entity-expanding mode, a non-char entity); false if it may still continue
- Throws:
XMLStreamException
-
skipWS
protected final boolean skipWS(char c) throws XMLStreamException
Method that will skip any white space from input source(s)- Returns:
- true If at least one white space was skipped; false if not (character passed was not white space)
- Throws:
XMLStreamException
-
findEntity
protected EntityDecl findEntity(String id, Object arg) throws XMLStreamException
Description copied from class:StreamScanner
Abstract method for sub-classes to implement, for finding a declared general or parsed entity.- Specified by:
findEntity
in classStreamScanner
- Parameters:
id
- Identifier of the entity to findarg
- Optional argument passed from caller; needed by DTD reader.- Throws:
XMLStreamException
-
handleUndeclaredEntity
protected void handleUndeclaredEntity(String id) throws XMLStreamException
Description copied from class:StreamScanner
This method gets called if a declaration for an entity was not found in entity expanding mode (enabled by default for xml reader, always enabled for dtd reader).- Specified by:
handleUndeclaredEntity
in classStreamScanner
- Throws:
XMLStreamException
-
handleIncompleteEntityProblem
protected void handleIncompleteEntityProblem(WstxInputSource closing) throws XMLStreamException
- Specified by:
handleIncompleteEntityProblem
in classStreamScanner
- Throws:
XMLStreamException
-
handleGreedyEntityProblem
protected void handleGreedyEntityProblem(WstxInputSource input) throws XMLStreamException
This problem gets reported if an entity tries to expand to a close tag matching start tag that did not came from the same entity (but from parent).- Throws:
XMLStreamException
-
throwNotTextualOrElem
protected void throwNotTextualOrElem(int type)
-
throwUnexpectedEOF
protected void throwUnexpectedEOF() throws WstxException
Method called when we get an EOF within content tree- Throws:
WstxException
-
_constructUnexpectedInTyped
protected XMLStreamException _constructUnexpectedInTyped(int nextToken)
Method called to report a problem with
-
_constructTypeException
protected org.codehaus.stax2.typed.TypedXMLStreamException _constructTypeException(String msg, String lexicalValue)
-
reportInvalidContent
protected void reportInvalidContent(int evtType) throws XMLStreamException
Stub method implemented by validating parsers, to report content that's not valid for current element context. Defined at this level since some such problems need to be caught at low-level; however, details of error reports are not needed here.- Parameters:
evtType
- Type of event that contained unexpected content- Throws:
XMLStreamException
-
-