|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.ctc.wstx.io.WstxInputData
com.ctc.wstx.sr.StreamScanner
com.ctc.wstx.sr.BasicStreamReader
public class BasicStreamReader
Implementation of XMLStreamReader2
that implements non-DTD
aware parts of XML handling (plus some minimal support for parsing
DOCTYPE declaration and skipping internal DTD subset if necessary).
It can be used as is, and it is also the superclass of the DTD-aware
implementation(s).
This class is also the lowest common denominator for all actual
XMLStreamReader2
implementations Woodstox will ever create.
About interfaces implemented: XMLStreamReader2
is part of StAX2,
and implemented as the "main" interface. Implementing DTDInfo
is
just an implementation detail; it could be implemented as a separate
Object if necessary.
Field Summary | |
---|---|
protected static java.lang.String |
DEFAULT_NS_PREFIX
StAX API expects null to indicate "no prefix", not an empty String... |
protected AttributeCollector |
mAttrCollector
Object that stores information about currently accessible attributes. |
protected boolean |
mCfgCoalesceText
|
protected boolean |
mCfgLazyParsing
|
protected boolean |
mCfgNormalizeAttrs
|
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 purposes |
protected int |
mConfigFlags
Set of locally stored configuration flags |
protected EntityDecl |
mCurrEntity
Entity reference stream currently points to; only used when in non-automatically expanding mode. |
protected int |
mCurrToken
Current state of the stream, ie token value returned by getEventType() . |
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 java.lang.String |
mDtdPublicId
Public id of the DTD, if one exists and has been parsed. |
protected java.lang.String |
mDtdSystemId
System id of the DTD, if one exists and has been parsed. |
protected InputElementStack |
mElementStack
Currently open element tree |
protected java.util.Map |
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 javax.xml.stream.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 (especially getText and its variations), we may need
to delay throwing an exception until next() is called next
time. |
protected int |
mSecondaryToken
Additional information sometimes stored (when generating dummy events in multi-doc mode, for example) temporarily when mCurrToken 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 java.lang.String |
sPrefixXml
|
protected static java.lang.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, mCfgNormalizeLFs, mCfgNsEnabled, mCfgReplaceEntities, mConfig, mCurrDepth, mCurrName, mDocXmlVersion, mInput, mInputTopDepth, mNameBuffer, mRootInput, mTokenInputCol, mTokenInputRow, mTokenInputTotal, SAX_COMPAT_MODE |
Fields inherited from class com.ctc.wstx.io.WstxInputData |
---|
CHAR_NULL, CHAR_SPACE, INT_NULL, INT_SPACE, MAX_UNICODE_CHAR, mCurrInputProcessed, mCurrInputRow, mCurrInputRowStart, mInputBuffer, mInputLen, mInputPtr, mXml11 |
Fields inherited from interface org.codehaus.stax2.XMLStreamReader2 |
---|
FEATURE_DTD_OVERRIDE |
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 | |
---|---|
protected |
BasicStreamReader(InputBootstrapper bs,
BranchingReaderSource input,
ReaderCreator owner,
ReaderConfig cfg,
InputElementStack elemStack,
boolean forER)
|
Method Summary | |
---|---|
protected void |
checkCData()
|
protected java.lang.String |
checkKeyword(char c,
java.lang.String expected)
|
void |
close()
Note: as per StAX 1.0 specs, this method does NOT close the underlying input reader. |
void |
closeCompletely()
Method similar to XMLStreamReader.getNamespaceContext() ,
except that this method also does close the underlying input
source if it has not yet been closed. |
static BasicStreamReader |
createBasicStreamReader(BranchingReaderSource input,
ReaderCreator owner,
ReaderConfig cfg,
InputBootstrapper bs,
boolean forER)
Factory method for constructing readers. |
protected static InputElementStack |
createElementStack(ReaderConfig cfg)
|
protected void |
ensureFinishToken()
|
protected EntityDecl |
findEntity(java.lang.String id,
java.lang.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(org.xml.sax.ContentHandler h)
|
void |
fireSaxCommentEvent(org.xml.sax.ext.LexicalHandler h)
|
void |
fireSaxEndElement(org.xml.sax.ContentHandler h)
|
void |
fireSaxPIEvent(org.xml.sax.ContentHandler h)
|
void |
fireSaxSpaceEvents(org.xml.sax.ContentHandler h)
|
void |
fireSaxStartElement(org.xml.sax.ContentHandler h,
org.xml.sax.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()
|
AttributeInfo |
getAttributeInfo()
Method that can be called to get additional information about attributes related to the current start element, as well as related DTD-based information if available. |
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 nsURI,
java.lang.String localName)
|
java.lang.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()
Method that returns the number of open elements in the stack; 0 when the reader is in prolog/epilog, 1 inside root element and so on. |
DTDInfo |
getDTDInfo()
Since this class implements DTDInfo , method can just
return this . |
java.lang.String |
getDTDInternalSubset()
|
java.lang.String |
getDTDPublicId()
|
java.lang.String |
getDTDRootName()
|
java.lang.String |
getDTDSystemId()
|
java.lang.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. |
java.lang.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()
Method that can be used to get exact byte offset (number of bytes read from the stream right before getting to this location) in the stream that is pointed to by this reader, right after the end of the current event. |
long |
getEndingCharOffset()
Method that can be used to get exact character offset (number of chars read from the stream right before getting to this location) in the stream that is pointed to by this reader, right after the end of the current event. |
XMLStreamLocation2 |
getEndLocation()
An optional method that either returns the location object that points the ending position of the current event, or null if implementation does not keep track of it (some may return only start location; and some no location at all). |
int |
getEventType()
Returns type of the last event returned; or START_DOCUMENT before any events has been explicitly returned. |
java.lang.Object |
getFeature(java.lang.String name)
Method that can be used to get per-reader values; both generic ones (names for which are defined as constants in this class), and implementation dependant ones. |
InputElementStack |
getInputElementStack()
Method needed by classes (like stream writer implementations) that want to have efficient direct access to element stack implementation |
java.lang.String |
getLocalName()
|
javax.xml.stream.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). |
LocationInfo |
getLocationInfo()
Location information is always accessible, for this reader. |
javax.xml.namespace.QName |
getName()
|
javax.xml.namespace.NamespaceContext |
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)
|
javax.xml.namespace.NamespaceContext |
getNonTransientNamespaceContext()
This method returns a namespace contenxt object that contains information identical to that returned by XMLStreamReader.getNamespaceContext() ,
but one that is
not transient. |
java.lang.String |
getPIData()
|
java.lang.String |
getPITarget()
|
java.lang.String |
getPrefix()
|
java.lang.String |
getPrefixedName()
This method returns "prefix-qualified" name of the current element. |
java.lang.Object |
getProcessedDTD()
Note: DTD-handling sub-classes need to override this method. |
DTDValidationSchema |
getProcessedDTDSchema()
Sub-class will override this method |
java.lang.Object |
getProperty(java.lang.String name)
|
long |
getStartingByteOffset()
Method that can be used to get exact byte offset (number of bytes read from the stream right before getting to this location) in the stream that is pointed to by this reader, right before the start of the current event. |
long |
getStartingCharOffset()
Method that can be used to get exact character offset (number of chars read from the stream right before getting to this location) in the stream that is pointed to by this reader, right before the start of the current event. |
java.lang.String |
getText()
|
int |
getText(java.io.Writer w,
boolean preserveContents)
Method similar to getText() , 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()
|
java.lang.String |
getVersion()
|
protected int |
handleEOF(boolean isProlog)
|
protected char |
handleExpandedSurrogate(char first,
char second)
Method called when a character entity needs to expand to a pair of 16-bit surrogate characters. |
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(java.lang.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()
Method that can be used to check whether current START_ELEMENT event was created for an empty element (xml short-hand notation where one tag implies start and end, ending with "/>"), or not. |
boolean |
isEndElement()
|
boolean |
isNamespaceAware()
|
boolean |
isPropertySupported(java.lang.String name)
Method similar to XMLInputFactory.isPropertySupported(java.lang.String) , used
to determine whether a property is supported by the Reader
instance. |
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(java.lang.String name,
char quoteChar,
TextBuffer tbuf)
Method called to parse quoted xml declaration pseudo-attribute values. |
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,
java.lang.String nsUri,
java.lang.String localName)
|
protected void |
safeEnsureFinishToken()
|
protected void |
safeFinishToken()
|
void |
setFeature(java.lang.String name,
java.lang.Object value)
Method that can be used to set per-reader features such as configuration settings; both generic ones (names for which are defined as constants in this class), and implementation dependant ones. |
boolean |
setProperty(java.lang.String name,
java.lang.Object value)
Method that can be used to set per-reader properties; a subset of properties one can set via matching XMLInputFactory2
instance. |
ValidationProblemHandler |
setValidationProblemHandler(ValidationProblemHandler h)
Method that application can call to define a custom handler for validation problems encountered during validation process. |
void |
skipElement()
Method that will skip all the contents of the element that the stream currently points to. |
protected char |
skipEquals(java.lang.String name,
java.lang.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()
|
XMLValidator |
stopValidatingAgainst(XMLValidationSchema schema)
Method that can be called by application to stop validating output against a schema, for which Validatable.validateAgainst(org.codehaus.stax2.validation.XMLValidationSchema)
was called earlier. |
XMLValidator |
stopValidatingAgainst(XMLValidator validator)
Method that can be called by application to stop validating output using specified validator. |
XMLValidator |
validateAgainst(XMLValidationSchema schema)
Method that will construct a XMLValidator instance from the
given schema (unless a validator for that schema has already been
added),
initialize it if necessary, and make validatable object (reader,
writer)
call appropriate validation methods from this point on until the
end of the document (that is, it's not scoped with sub-trees), or until
validator is removed by an explicit call to
Validatable.stopValidatingAgainst(org.codehaus.stax2.validation.XMLValidationSchema) . |
java.lang.Object |
withStartElement(ElemCallback cb,
javax.xml.stream.Location loc)
Method called by DefaultEventAllocator
to get double-indirection necessary for constructing start element
events. |
protected void |
wrappedFinishToken()
|
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 |
Field Detail |
---|
protected static final java.lang.String DEFAULT_NS_PREFIX
protected final int mConfigFlags
protected final boolean mCfgCoalesceText
protected final boolean mCfgNormalizeAttrs
protected final boolean mCfgReportTextAsChars
protected final boolean mCfgLazyParsing
protected final int mShortestTextSegment
protected static final java.lang.String sPrefixXml
protected static final java.lang.String sPrefixXmlns
protected final ReaderCreator mOwner
protected int mDocStandalone
protected java.lang.String mDtdPublicId
protected java.lang.String mDtdSystemId
protected final TextBuffer mTextBuffer
protected final InputElementStack mElementStack
protected final AttributeCollector mAttrCollector
protected boolean mStDoctypeFound
protected int mTokenState
Initially set to fully tokenized, since it's the virtual START_DOCUMENT event that we fully know by now (parsed by bootstrapper)
protected final int mStTextThreshold
protected boolean mStEmptyElem
protected int mCurrToken
getEventType()
. Needs to be initialized to START_DOCUMENT,
since that's the state it starts in.
protected int mSecondaryToken
mCurrToken
is already populated.
protected int mWsStatus
protected boolean mValidateText
XMLValidator.CONTENT_ALLOW_VALIDATABLE_TEXT
,
and will prevent lazy parsing of text.
protected int mCheckIndentation
protected javax.xml.stream.XMLStreamException mPendingException
getText
and its variations), we may need
to delay throwing an exception until next()
is called next
time. If so, this variable holds the pending stream exception.
protected java.util.Map mGeneralEntities
protected EntityDecl mCurrEntity
protected int mVldContent
XMLValidator
,
(like XMLValidator.CONTENT_ALLOW_VALIDATABLE_TEXT
).
Only used inside tree; ignored for prolog/epilog (which
have straight-forward static rules).
Constructor Detail |
---|
protected BasicStreamReader(InputBootstrapper bs, BranchingReaderSource input, ReaderCreator owner, ReaderConfig cfg, InputElementStack elemStack, boolean forER) throws java.io.IOException, javax.xml.stream.XMLStreamException
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.
java.io.IOException
javax.xml.stream.XMLStreamException
Method Detail |
---|
public static BasicStreamReader createBasicStreamReader(BranchingReaderSource input, ReaderCreator owner, ReaderConfig cfg, InputBootstrapper bs, boolean forER) throws java.io.IOException, javax.xml.stream.XMLStreamException
owner
- "Owner" of this reader, factory that created the reader;
needed for returning updated symbol table information after parsing.input
- Input source used to read the XML document.cfg
- Object that contains reader configuration info.
java.io.IOException
javax.xml.stream.XMLStreamException
protected static InputElementStack createElementStack(ReaderConfig cfg)
public java.lang.String getCharacterEncodingScheme()
Note: method name is rather confusing (compare to getEncoding()
).
getCharacterEncodingScheme
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getEncoding()
Reader
), it should return null.
getEncoding
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getVersion()
getVersion
in interface javax.xml.stream.XMLStreamReader
public boolean isStandalone()
isStandalone
in interface javax.xml.stream.XMLStreamReader
public boolean standaloneSet()
standaloneSet
in interface javax.xml.stream.XMLStreamReader
public java.lang.Object getProperty(java.lang.String name)
getProperty
in interface javax.xml.stream.XMLStreamReader
public int getAttributeCount()
getAttributeCount
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getAttributeLocalName(int index)
getAttributeLocalName
in interface javax.xml.stream.XMLStreamReader
public javax.xml.namespace.QName getAttributeName(int index)
getAttributeName
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getAttributeNamespace(int index)
getAttributeNamespace
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getAttributePrefix(int index)
getAttributePrefix
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getAttributeType(int index)
getAttributeType
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getAttributeValue(int index)
getAttributeValue
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getAttributeValue(java.lang.String nsURI, java.lang.String localName)
getAttributeValue
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getElementText() throws javax.xml.stream.XMLStreamException
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.
getElementText
in interface javax.xml.stream.XMLStreamReader
javax.xml.stream.XMLStreamException
public int getEventType()
getEventType
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getLocalName()
getLocalName
in interface javax.xml.stream.XMLStreamReader
public javax.xml.namespace.QName getName()
getName
in interface javax.xml.stream.XMLStreamReader
public javax.xml.namespace.NamespaceContext getNamespaceContext()
getNamespaceContext
in interface javax.xml.stream.XMLStreamReader
public int getNamespaceCount()
getNamespaceCount
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getNamespacePrefix(int index)
getNamespacePrefix
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getNamespaceURI()
getNamespaceURI
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getNamespaceURI(int index)
getNamespaceURI
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getNamespaceURI(java.lang.String prefix)
getNamespaceURI
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getPIData()
getPIData
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getPITarget()
getPITarget
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getPrefix()
getPrefix
in interface javax.xml.stream.XMLStreamReader
public java.lang.String getText()
getText
in interface javax.xml.stream.XMLStreamReader
public char[] getTextCharacters()
getTextCharacters
in interface javax.xml.stream.XMLStreamReader
public int getTextCharacters(int sourceStart, char[] target, int targetStart, int len)
getTextCharacters
in interface javax.xml.stream.XMLStreamReader
public int getTextLength()
getTextLength
in interface javax.xml.stream.XMLStreamReader
public int getTextStart()
getTextStart
in interface javax.xml.stream.XMLStreamReader
public boolean hasName()
hasName
in interface javax.xml.stream.XMLStreamReader
public boolean hasNext()
hasNext
in interface javax.xml.stream.XMLStreamReader
public boolean hasText()
hasText
in interface javax.xml.stream.XMLStreamReader
public boolean isAttributeSpecified(int index)
isAttributeSpecified
in interface javax.xml.stream.XMLStreamReader
public boolean isCharacters()
isCharacters
in interface javax.xml.stream.XMLStreamReader
public boolean isEndElement()
isEndElement
in interface javax.xml.stream.XMLStreamReader
public boolean isStartElement()
isStartElement
in interface javax.xml.stream.XMLStreamReader
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?
isWhiteSpace
in interface javax.xml.stream.XMLStreamReader
public void require(int type, java.lang.String nsUri, java.lang.String localName) throws javax.xml.stream.XMLStreamException
require
in interface javax.xml.stream.XMLStreamReader
javax.xml.stream.XMLStreamException
public final int next() throws javax.xml.stream.XMLStreamException
next
in interface javax.xml.stream.XMLStreamReader
javax.xml.stream.XMLStreamException
public int nextTag() throws javax.xml.stream.XMLStreamException
nextTag
in interface javax.xml.stream.XMLStreamReader
javax.xml.stream.XMLStreamException
public void close() throws javax.xml.stream.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.
close
in interface javax.xml.stream.XMLStreamReader
javax.xml.stream.XMLStreamException
public java.lang.Object getFeature(java.lang.String name)
XMLStreamReader2
Note: although some feature names are shared with
XMLStreamReader2.setFeature(java.lang.String, java.lang.Object)
, not all are: some features are read-only,
some write-only
getFeature
in interface XMLStreamReader2
name
- Name of the feature of which value to get
public void setFeature(java.lang.String name, java.lang.Object value)
XMLStreamReader2
Note: although some feature names are shared with
XMLStreamReader2.getFeature(java.lang.String)
, not all are: some features are read-only,
some write-only
setFeature
in interface XMLStreamReader2
name
- Name of the feature to setvalue
- Value to set feature to.public boolean isPropertySupported(java.lang.String name)
XMLStreamReader2
XMLInputFactory.isPropertySupported(java.lang.String)
, used
to determine whether a property is supported by the Reader
instance. This means that this method may return false
for some properties that the input factory does support: specifically,
it should only return true if the value is mutable on per-instance
basis. False means that either the property is not recognized, or
is not mutable via reader instance.
isPropertySupported
in interface XMLStreamReader2
public boolean setProperty(java.lang.String name, java.lang.Object value)
XMLStreamReader2
XMLInputFactory2
instance. Exactly which methods are mutable is implementation
specific.
setProperty
in interface XMLStreamReader2
name
- Name of the property to setvalue
- Value to set property to.
public void skipElement() throws javax.xml.stream.XMLStreamException
XMLStreamReader2
IllegalStateException
is thrown); after the call the stream will point to the matching
END_ELEMENT event, having skipped zero or more intervening events
for the contents.
skipElement
in interface XMLStreamReader2
javax.xml.stream.XMLStreamException
public AttributeInfo getAttributeInfo() throws javax.xml.stream.XMLStreamException
XMLStreamReader2
IllegalStateException
will be thrown.
getAttributeInfo
in interface XMLStreamReader2
javax.xml.stream.XMLStreamException
public DTDInfo getDTDInfo() throws javax.xml.stream.XMLStreamException
DTDInfo
, method can just
return this
.
getDTDInfo
in interface XMLStreamReader2
javax.xml.stream.XMLStreamException
public final LocationInfo getLocationInfo()
getLocationInfo
in interface XMLStreamReader2
public int getText(java.io.Writer w, boolean preserveContents) throws java.io.IOException, javax.xml.stream.XMLStreamException
getText()
, 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
getText
in interface XMLStreamReader2
w
- Writer to use for writing textual contentspreserveContents
- If true, reader has to preserve contents
so that further calls to getText
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 to getText
is not guaranteed to
return meaningful data.
java.io.IOException
javax.xml.stream.XMLStreamException
public int getDepth()
XMLStreamReader2
getDepth
in interface XMLStreamReader2
public boolean isEmptyElement() throws javax.xml.stream.XMLStreamException
XMLStreamReader2
Note: method may need to read more data to know if the element
is an empty one, and as such may throw an i/o or parsing exception
(as XMLStreamException
); however, it won't throw exceptions
for non-START_ELEMENT event types.
isEmptyElement
in interface XMLStreamReader2
javax.xml.stream.XMLStreamException
public javax.xml.namespace.NamespaceContext getNonTransientNamespaceContext()
XMLStreamReader2
XMLStreamReader.getNamespaceContext()
,
but one that is
not transient. That is, one that will remain valid and unchanged
after its creation. This allows the namespace context to be used
independent of its source documents life cycle. One possible use
case is to use this namespace context for 'initializing' writers
(especially ones that use repairing mode) with optimal/preferred name
space bindings.
getNonTransientNamespaceContext
in interface XMLStreamReader2
public java.lang.String getPrefixedName()
XMLStreamReader2
Note: implementations are encouraged to provide an implementation
that would be more efficient than calling getLocalName
and getPrefix
separately, but are not required to do
so. Nonetheless it is usually at least as efficient (if not more)
to call this method as to do it fully in calling code.
getPrefixedName
in interface XMLStreamReader2
public void closeCompletely() throws javax.xml.stream.XMLStreamException
XMLStreamReader2
XMLStreamReader.getNamespaceContext()
,
except that this method also does close the underlying input
source if it has not yet been closed. It is generally preferable
to call this method if the parsing ends in an exception;
and for some input sources (when passing
a File
or URL
for factory
method) it has to be called as the application does not have
access to the actually input source (InputStream
opened from a URL
and so on).
closeCompletely
in interface XMLStreamReader2
javax.xml.stream.XMLStreamException
public java.lang.Object getProcessedDTD()
Note: DTD-handling sub-classes need to override this method.
getProcessedDTD
in interface DTDInfo
public java.lang.String getDTDRootName()
getDTDRootName
in interface DTDInfo
public java.lang.String getDTDPublicId()
getDTDPublicId
in interface DTDInfo
public java.lang.String getDTDSystemId()
getDTDSystemId
in interface DTDInfo
public java.lang.String getDTDInternalSubset()
getDTDInternalSubset
in interface DTDInfo
public DTDValidationSchema getProcessedDTDSchema()
getProcessedDTDSchema
in interface DTDInfo
public long getStartingByteOffset()
LocationInfo
Note: this value MAY be the same as the one returned by
LocationInfo.getStartingCharOffset()
, but usually only for single-byte
character streams (Ascii, ISO-Latin).
getStartingByteOffset
in interface LocationInfo
public long getStartingCharOffset()
LocationInfo
Note: this value MAY be the same as the one returned by
LocationInfo.getStartingByteOffset()
; this is the case for single-byte
character streams (Ascii, ISO-Latin), as well as for streams for
which byte offset information is not available (Readers, Strings).
getStartingCharOffset
in interface LocationInfo
public long getEndingByteOffset() throws javax.xml.stream.XMLStreamException
LocationInfo
Note: this value MAY be the same as the one returned by
LocationInfo.getEndingCharOffset()
, but usually only for single-byte
character streams (Ascii, ISO-Latin).
Note: for lazy-loading implementations, calling this method may require the underlying stream to be advanced and contents parsed; this is why it is possible that an exception be thrown.
getEndingByteOffset
in interface LocationInfo
javax.xml.stream.XMLStreamException
public long getEndingCharOffset() throws javax.xml.stream.XMLStreamException
LocationInfo
Note: this value MAY be the same as the one returned by
LocationInfo.getEndingByteOffset()
; this is the case for single-byte
character streams (Ascii, ISO-Latin), as well as for streams for
which byte offset information is not available (Readers, Strings).
Note: for lazy-loading implementations, calling this method may require the underlying stream to be advanced and contents parsed; this is why it is possible that an exception be thrown.
getEndingCharOffset
in interface LocationInfo
javax.xml.stream.XMLStreamException
public final javax.xml.stream.Location getLocation()
StreamScanner
getLocation
in interface InputProblemReporter
getLocation
in interface javax.xml.stream.XMLStreamReader
getLocation
in interface LocationInfo
getLocation
in class StreamScanner
public final XMLStreamLocation2 getEndLocation() throws javax.xml.stream.XMLStreamException
LocationInfo
Note: since some implementations may not yet know the end location (esp. ones that do lazy loading), this call may require further parsing. As a result, this method may throw a parsing or I/O errors.
getEndLocation
in interface LocationInfo
javax.xml.stream.XMLStreamException
- If the stream reader had to advance to
the end of the event (to find the location), it may encounter a
parsing (or I/O) error; if so, that gets thrownpublic XMLValidator validateAgainst(XMLValidationSchema schema) throws javax.xml.stream.XMLStreamException
Validatable
XMLValidator
instance from the
given schema (unless a validator for that schema has already been
added),
initialize it if necessary, and make validatable object (reader,
writer)
call appropriate validation methods from this point on until the
end of the document (that is, it's not scoped with sub-trees), or until
validator is removed by an explicit call to
Validatable.stopValidatingAgainst(org.codehaus.stax2.validation.XMLValidationSchema)
.
Note that while this method can be called at any point in output processing, validator instances are not required to be able to handle addition at other points than right before outputting the root element.
validateAgainst
in interface Validatable
javax.xml.stream.XMLStreamException
public XMLValidator stopValidatingAgainst(XMLValidationSchema schema) throws javax.xml.stream.XMLStreamException
Validatable
Validatable.validateAgainst(org.codehaus.stax2.validation.XMLValidationSchema)
was called earlier.
stopValidatingAgainst
in interface Validatable
javax.xml.stream.XMLStreamException
public XMLValidator stopValidatingAgainst(XMLValidator validator) throws javax.xml.stream.XMLStreamException
Validatable
Validatable.validateAgainst(org.codehaus.stax2.validation.XMLValidationSchema)
.
Note: the specified validator is compared for identity with validators in use, not for equality.
stopValidatingAgainst
in interface Validatable
validator
)
if it was being used for validating current document; null if not.
javax.xml.stream.XMLStreamException
public ValidationProblemHandler setValidationProblemHandler(ValidationProblemHandler h)
Validatable
setValidationProblemHandler
in interface Validatable
h
- Handler to install, if non null; if null, indicates that
the default (implementation-specific) handling should be used
public EntityDecl getCurrentEntityDecl()
getCurrentEntityDecl
in interface StreamReaderImpl
public java.lang.Object withStartElement(ElemCallback cb, javax.xml.stream.Location loc)
DefaultEventAllocator
to get double-indirection necessary for constructing start element
events.
withStartElement
in interface StreamReaderImpl
public boolean isNamespaceAware()
isNamespaceAware
in interface StreamReaderImpl
public InputElementStack getInputElementStack()
getInputElementStack
in interface StreamReaderImpl
public AttributeCollector getAttributeCollector()
getAttributeCollector
in interface StreamReaderImpl
public void fireSaxStartElement(org.xml.sax.ContentHandler h, org.xml.sax.Attributes attrs) throws org.xml.sax.SAXException
org.xml.sax.SAXException
public void fireSaxEndElement(org.xml.sax.ContentHandler h) throws org.xml.sax.SAXException
org.xml.sax.SAXException
public void fireSaxCharacterEvents(org.xml.sax.ContentHandler h) throws java.io.IOException, javax.xml.stream.XMLStreamException, org.xml.sax.SAXException
java.io.IOException
javax.xml.stream.XMLStreamException
org.xml.sax.SAXException
public void fireSaxSpaceEvents(org.xml.sax.ContentHandler h) throws java.io.IOException, javax.xml.stream.XMLStreamException, org.xml.sax.SAXException
java.io.IOException
javax.xml.stream.XMLStreamException
org.xml.sax.SAXException
public void fireSaxCommentEvent(org.xml.sax.ext.LexicalHandler h) throws java.io.IOException, javax.xml.stream.XMLStreamException, org.xml.sax.SAXException
java.io.IOException
javax.xml.stream.XMLStreamException
org.xml.sax.SAXException
public void fireSaxPIEvent(org.xml.sax.ContentHandler h) throws java.io.IOException, javax.xml.stream.XMLStreamException, org.xml.sax.SAXException
java.io.IOException
javax.xml.stream.XMLStreamException
org.xml.sax.SAXException
protected final boolean hasConfigFlags(int flags)
protected java.lang.String checkKeyword(char c, java.lang.String expected) throws java.io.IOException, javax.xml.stream.XMLStreamException
java.io.IOException
javax.xml.stream.XMLStreamException
protected void checkCData() throws java.io.IOException, javax.xml.stream.XMLStreamException
java.io.IOException
javax.xml.stream.XMLStreamException
protected void handleRootElem(char c) throws java.io.IOException, javax.xml.stream.XMLStreamException
java.io.IOException
javax.xml.stream.XMLStreamException
protected void initValidation() throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
protected int handleEOF(boolean isProlog) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
protected int handleMultiDocStart(int nextEvent)
protected void handleMultiDocXmlDecl() throws java.io.IOException, javax.xml.stream.XMLStreamException
java.io.IOException
javax.xml.stream.XMLStreamException
protected final char skipEquals(java.lang.String name, java.lang.String eofMsg) throws java.io.IOException, javax.xml.stream.XMLStreamException
java.io.IOException
javax.xml.stream.XMLStreamException
protected final void parseQuoted(java.lang.String name, char quoteChar, TextBuffer tbuf) throws java.io.IOException, javax.xml.stream.XMLStreamException
Note: since it'll be called at most 3 times per document, this method is not optimized too much.
java.io.IOException
javax.xml.stream.XMLStreamException
protected void finishDTD(boolean copyContents) throws java.io.IOException, javax.xml.stream.XMLStreamException
NOTE: Since this default implementation will be overridden by some sub-classes, make sure you do NOT change the method signature.
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).
java.io.IOException
javax.xml.stream.XMLStreamException
protected void ensureFinishToken() throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
protected void safeEnsureFinishToken()
protected void wrappedFinishToken() throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
protected void safeFinishToken()
protected void finishToken(boolean deferErrors) throws java.io.IOException, javax.xml.stream.XMLStreamException
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.
java.io.IOException
javax.xml.stream.XMLStreamException
protected final boolean skipWS(char c) throws java.io.IOException, javax.xml.stream.XMLStreamException
java.io.IOException
javax.xml.stream.XMLStreamException
protected EntityDecl findEntity(java.lang.String id, java.lang.Object arg) throws javax.xml.stream.XMLStreamException
StreamScanner
findEntity
in class StreamScanner
id
- Identifier of the entity to findarg
- Optional argument passed from caller; needed by DTD
reader.
javax.xml.stream.XMLStreamException
protected void handleUndeclaredEntity(java.lang.String id) throws javax.xml.stream.XMLStreamException
StreamScanner
handleUndeclaredEntity
in class StreamScanner
javax.xml.stream.XMLStreamException
protected void handleIncompleteEntityProblem(WstxInputSource closing) throws javax.xml.stream.XMLStreamException
handleIncompleteEntityProblem
in class StreamScanner
javax.xml.stream.XMLStreamException
protected char handleExpandedSurrogate(char first, char second)
StreamScanner
handleExpandedSurrogate
in class StreamScanner
protected void handleGreedyEntityProblem(WstxInputSource input) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
protected void reportInvalidContent(int evtType) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |