public class PullParser extends java.lang.Object implements XmlPullParser, XmlPullParserBufferControl, XmlPullParserEventPosition
| Modifier and Type | Field and Description |
|---|---|
protected Attribute[] |
attrPos
temporary array of current attributes
|
protected int |
attrPosEnd
index for last attribute in attrPos array
|
protected int |
attrPosSize
size of attrPos array
|
protected static boolean |
CHECK_ATTRIB_UNIQ
Should attribute uniqueness be checked for attributes
as in specified XML and NS specifications?
|
protected java.lang.String |
elContent
Content of current element if in CONTENT state
|
protected ElementContent[] |
elStack
temprary array to keep ElementContent stack
|
protected int |
elStackDepth
how many elements are on elStack
|
protected int |
elStackSize
size of elStack array
|
protected boolean |
emptyElement
Have we read empty element?
|
protected int |
eventEnd
end position of current event in tokenizer biffer
|
protected int |
eventStart
start position of current event in tokenizer biffer
|
protected java.util.Hashtable |
prefix2Ns
mapping of names prefixes to uris
|
protected boolean |
reportNsAttribs
should parser report namespace xmlns* attributes ?
|
protected boolean |
seenRootElement
Have we seen root element
|
protected byte |
state
what is current event type as returned from next()?
|
protected boolean |
supportNs
should parser support namespaces?
|
protected byte |
token
what is current token returned from tokeizer
|
protected Tokenizer |
tokenizer
XML tokenizer that is doing actual tokenizning of input stream.
|
protected static boolean |
USE_QNAMEBUF |
CONTENT, END_DOCUMENT, END_TAG, START_TAG| Constructor and Description |
|---|
PullParser()
Create instance of pull parser.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
ensureAttribs(int size)
Make sure that in attributes temporary array is enough space.
|
protected void |
ensureCapacity(int size)
Make sure that we have enough space to keep element stack if passed size.
|
int |
getBufferShrinkOffset() |
int |
getColumnNumber() |
int |
getContentLength()
Return how big is content.
|
int |
getDepth()
Returns the current depth of the element.
|
char[] |
getEventBuffer()
NOTE: This may be internal buffer and is valud
only until call to method next()- do NOT attempt modify !
|
int |
getEventEnd() |
int |
getEventStart() |
byte |
getEventType()
Returns the type of the current element (START_TAG, END_TAG, CONTENT, etc)
|
int |
getHardLimit() |
int |
getLineNumber() |
java.lang.String |
getLocalName()
Returns the local name of the current element
(current event must be START_TAG or END_TAG)
|
int |
getNamespacesLength(int depth) |
java.lang.String |
getNamespaceUri()
Returns the namespace URI of the current element
Returns null if not applicable
(current event must be START_TAG or END_TAG)
|
java.lang.String |
getPosDesc()
Return string describing current position of parser in input stream.
|
java.lang.String |
getPrefix()
Returns the prefix of the current element
or null if elemet has no prefix.
|
java.lang.String |
getQNameLocal(java.lang.String qName)
Return local part of qname.
|
java.lang.String |
getQNameUri(java.lang.String qName)
Return uri part of qname.
|
java.lang.String |
getRawName()
Returns the raw name (prefix + ':' + localName) of the current element
(current event must be START_TAG or END_TAG)
|
int |
getSoftLimit() |
boolean |
isAllowedMixedContent()
Is mixed element context allowed?
|
boolean |
isBufferShrinkable() |
boolean |
isNamespaceAttributesReporting()
Is parser going to report namespace attributes (xmlns*) ?
|
boolean |
isNamespaceAware()
Is parser namespace aware?
|
boolean |
isWhitespaceContent()
Return true if just read CONTENT contained only white spaces.
|
byte |
next()
This is key method - it reads more from input stream
and returns next event type
(such as START_TAG, END_TAG, CONTENT).
|
java.lang.String |
readContent()
Return String that contains just read CONTENT.
|
void |
readEndTag(XmlEndTag etag)
Read value of just read END_TAG into passed as argument EndTag.
|
void |
readNamespacesPrefixes(int depth,
java.lang.String[] prefixes,
int off,
int len)
Return namespace prefixes for element at depth
|
void |
readNamespacesUris(int depth,
java.lang.String[] uris,
int off,
int len)
Return namespace URIs for element at depth
|
byte |
readNode(XmlNode node)
Read subtree into node: call readNodeWithoutChildren
and then parse subtree adding children
(values obtained with readXontent or readNodeWithoutChildren).
|
void |
readNodeWithoutChildren(XmlNode node)
Read node: it calls readStartTag and then if parser is namespaces
aware currently declared nemaspeces will be added
and defaultNamespace will be set.
|
void |
readStartTag(XmlStartTag stag)
Read value of just read START_TAG into passed as argument StartTag.
|
void |
reset()
Reset parser state so it can be used to parse new
|
protected void |
resetState() |
void |
setAllowedMixedContent(boolean enable)
Allow for mixed element content.
|
void |
setBufferShrinkable(boolean shrinkable) |
void |
setHardLimit(int value) |
void |
setInput(char[] buf)
Reset parser and set new input.
|
void |
setInput(char[] buf,
int off,
int len)
Set the input for parser.
|
void |
setInput(java.io.Reader reader)
Reset parser and set new input.
|
void |
setNamespaceAttributesReporting(boolean enable)
Make parser to report xmlns* attributes.
|
void |
setNamespaceAware(boolean awareness)
Set support of namespaces.
|
void |
setSoftLimit(int value) |
byte |
skipNode()
If parser has just read start tag it allows to skip whoole
subtree contined in this element.
|
protected static final boolean USE_QNAMEBUF
protected static final boolean CHECK_ATTRIB_UNIQ
protected boolean emptyElement
protected boolean seenRootElement
protected java.lang.String elContent
protected Tokenizer tokenizer
protected int eventStart
protected int eventEnd
protected byte state
protected byte token
protected boolean supportNs
protected boolean reportNsAttribs
protected java.util.Hashtable prefix2Ns
protected int attrPosEnd
protected int attrPosSize
protected Attribute[] attrPos
protected int elStackDepth
protected int elStackSize
protected ElementContent[] elStack
public void setInput(java.io.Reader reader)
setInput in interface XmlPullParserpublic void setInput(char[] buf)
setInput in interface XmlPullParserpublic void setInput(char[] buf,
int off,
int len)
throws XmlPullParserException
XmlPullParsersetInput in interface XmlPullParserXmlPullParserExceptionpublic void reset()
reset in interface XmlPullParserpublic boolean isAllowedMixedContent()
XmlPullParserisAllowedMixedContent in interface XmlPullParserpublic void setAllowedMixedContent(boolean enable)
setAllowedMixedContent in interface XmlPullParserpublic boolean isNamespaceAware()
XmlPullParserisNamespaceAware in interface XmlPullParserpublic void setNamespaceAware(boolean awareness)
throws XmlPullParserException
setNamespaceAware in interface XmlPullParserXmlPullParserExceptionpublic boolean isNamespaceAttributesReporting()
XmlPullParserisNamespaceAttributesReporting in interface XmlPullParserpublic void setNamespaceAttributesReporting(boolean enable)
setNamespaceAttributesReporting in interface XmlPullParserpublic java.lang.String getNamespaceUri()
XmlPullParsergetNamespaceUri in interface XmlPullParserpublic java.lang.String getLocalName()
XmlPullParsergetLocalName in interface XmlPullParserpublic java.lang.String getPrefix()
XmlPullParsergetPrefix in interface XmlPullParserpublic java.lang.String getRawName()
XmlPullParsergetRawName in interface XmlPullParserpublic java.lang.String getQNameLocal(java.lang.String qName)
XmlPullParsergetQNameLocal in interface XmlPullParserpublic java.lang.String getQNameUri(java.lang.String qName)
throws XmlPullParserException
XmlPullParsergetQNameUri in interface XmlPullParserXmlPullParserExceptionpublic int getDepth()
XmlPullParsergetDepth in interface XmlPullParserpublic int getNamespacesLength(int depth)
getNamespacesLength in interface XmlPullParserpublic void readNamespacesPrefixes(int depth,
java.lang.String[] prefixes,
int off,
int len)
throws XmlPullParserException
readNamespacesPrefixes in interface XmlPullParserXmlPullParserExceptionpublic void readNamespacesUris(int depth,
java.lang.String[] uris,
int off,
int len)
throws XmlPullParserException
readNamespacesUris in interface XmlPullParserXmlPullParserExceptionpublic java.lang.String getPosDesc()
getPosDesc in interface XmlPullParserpublic int getLineNumber()
getLineNumber in interface XmlPullParserpublic int getColumnNumber()
getColumnNumber in interface XmlPullParserpublic byte next()
throws XmlPullParserException,
java.io.IOException
This is simple automata (in pseudo-code):
byte next() {
while(state != END_DOCUMENT) {
token = tokenizer.next(); // get next XML token
switch(token) {
case Tokenizer.END_DOCUMENT:
return state = END_DOCUMENT
case Tokenizer.CONTENT:
// check if content allowed - only inside element
return state = CONTENT
case Tokenizer.ETAG_NAME:
// popup element from stack - compare if matched start and end tag
// if namespaces supported restore namespaces prefix mappings
return state = END_TAG;
case Tokenizer.STAG_NAME:
// create new element push it on stack
// process attributes (including namespaces)
// set emptyElement = true; if empty element
// check atribute uniqueness (including nmespacese prefixes)
return state = START_TAG;
}
}
}
Actual parsing is more complex especilly for start tag due to dealing with attributes reported separately from tokenizer and declaring namespace prefixes and uris.
next in interface XmlPullParserXmlPullParserExceptionjava.io.IOExceptionpublic byte getEventType()
XmlPullParsergetEventType in interface XmlPullParserpublic boolean isWhitespaceContent()
throws XmlPullParserException
isWhitespaceContent in interface XmlPullParserXmlPullParserExceptionpublic int getContentLength()
throws XmlPullParserException
XmlPullParserNOTE: parser must be on CONTENT event.
getContentLength in interface XmlPullParserXmlPullParserExceptionpublic java.lang.String readContent()
throws XmlPullParserException
readContent in interface XmlPullParserXmlPullParserExceptionpublic void readEndTag(XmlEndTag etag) throws XmlPullParserException
readEndTag in interface XmlPullParserXmlPullParserExceptionpublic void readStartTag(XmlStartTag stag) throws XmlPullParserException
readStartTag in interface XmlPullParserXmlPullParserExceptionpublic void readNodeWithoutChildren(XmlNode node) throws XmlPullParserException
XmlPullParserNOTE: parser must be on START_TAG event. and all events will written into node!
readNodeWithoutChildren in interface XmlPullParserXmlPullParserExceptionpublic byte readNode(XmlNode node) throws XmlPullParserException, java.io.IOException
XmlPullParserNOTE: parser must be on START_TAG event. and all events will written into node!
readNode in interface XmlPullParserXmlPullParserExceptionjava.io.IOExceptionpublic byte skipNode()
throws XmlPullParserException,
java.io.IOException
skipNode in interface XmlPullParserXmlPullParserExceptionjava.io.IOExceptionpublic int getHardLimit()
getHardLimit in interface XmlPullParserBufferControlpublic void setHardLimit(int value)
throws XmlPullParserException
setHardLimit in interface XmlPullParserBufferControlXmlPullParserExceptionpublic int getSoftLimit()
getSoftLimit in interface XmlPullParserBufferControlpublic void setSoftLimit(int value)
throws XmlPullParserException
setSoftLimit in interface XmlPullParserBufferControlXmlPullParserExceptionpublic int getBufferShrinkOffset()
getBufferShrinkOffset in interface XmlPullParserBufferControlpublic void setBufferShrinkable(boolean shrinkable)
throws XmlPullParserException
setBufferShrinkable in interface XmlPullParserBufferControlXmlPullParserExceptionpublic boolean isBufferShrinkable()
isBufferShrinkable in interface XmlPullParserBufferControlpublic int getEventStart()
getEventStart in interface XmlPullParserEventPositionpublic int getEventEnd()
getEventEnd in interface XmlPullParserEventPositionpublic char[] getEventBuffer()
XmlPullParserEventPositionNOTE: This may be internal buffer and is valud only until call to method next()- do NOT attempt modify !
getEventBuffer in interface XmlPullParserEventPositionprotected void ensureCapacity(int size)
protected void ensureAttribs(int size)
protected void resetState()
Copyright (c) 2003 IU Extreme! Lab http://www.extreme.indiana.edu/ All Rights Reserved.
Note this package is deprecated by XPP3 that implements XmlPull API