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 XmlPullParser
public void setInput(char[] buf)
setInput
in interface XmlPullParser
public void setInput(char[] buf, int off, int len) throws XmlPullParserException
XmlPullParser
setInput
in interface XmlPullParser
XmlPullParserException
public void reset()
reset
in interface XmlPullParser
public boolean isAllowedMixedContent()
XmlPullParser
isAllowedMixedContent
in interface XmlPullParser
public void setAllowedMixedContent(boolean enable)
setAllowedMixedContent
in interface XmlPullParser
public boolean isNamespaceAware()
XmlPullParser
isNamespaceAware
in interface XmlPullParser
public void setNamespaceAware(boolean awareness) throws XmlPullParserException
setNamespaceAware
in interface XmlPullParser
XmlPullParserException
public boolean isNamespaceAttributesReporting()
XmlPullParser
isNamespaceAttributesReporting
in interface XmlPullParser
public void setNamespaceAttributesReporting(boolean enable)
setNamespaceAttributesReporting
in interface XmlPullParser
public java.lang.String getNamespaceUri()
XmlPullParser
getNamespaceUri
in interface XmlPullParser
public java.lang.String getLocalName()
XmlPullParser
getLocalName
in interface XmlPullParser
public java.lang.String getPrefix()
XmlPullParser
getPrefix
in interface XmlPullParser
public java.lang.String getRawName()
XmlPullParser
getRawName
in interface XmlPullParser
public java.lang.String getQNameLocal(java.lang.String qName)
XmlPullParser
getQNameLocal
in interface XmlPullParser
public java.lang.String getQNameUri(java.lang.String qName) throws XmlPullParserException
XmlPullParser
getQNameUri
in interface XmlPullParser
XmlPullParserException
public int getDepth()
XmlPullParser
getDepth
in interface XmlPullParser
public int getNamespacesLength(int depth)
getNamespacesLength
in interface XmlPullParser
public void readNamespacesPrefixes(int depth, java.lang.String[] prefixes, int off, int len) throws XmlPullParserException
readNamespacesPrefixes
in interface XmlPullParser
XmlPullParserException
public void readNamespacesUris(int depth, java.lang.String[] uris, int off, int len) throws XmlPullParserException
readNamespacesUris
in interface XmlPullParser
XmlPullParserException
public java.lang.String getPosDesc()
getPosDesc
in interface XmlPullParser
public int getLineNumber()
getLineNumber
in interface XmlPullParser
public int getColumnNumber()
getColumnNumber
in interface XmlPullParser
public 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 XmlPullParser
XmlPullParserException
java.io.IOException
public byte getEventType()
XmlPullParser
getEventType
in interface XmlPullParser
public boolean isWhitespaceContent() throws XmlPullParserException
isWhitespaceContent
in interface XmlPullParser
XmlPullParserException
public int getContentLength() throws XmlPullParserException
XmlPullParser
NOTE: parser must be on CONTENT event.
getContentLength
in interface XmlPullParser
XmlPullParserException
public java.lang.String readContent() throws XmlPullParserException
readContent
in interface XmlPullParser
XmlPullParserException
public void readEndTag(XmlEndTag etag) throws XmlPullParserException
readEndTag
in interface XmlPullParser
XmlPullParserException
public void readStartTag(XmlStartTag stag) throws XmlPullParserException
readStartTag
in interface XmlPullParser
XmlPullParserException
public void readNodeWithoutChildren(XmlNode node) throws XmlPullParserException
XmlPullParser
NOTE: parser must be on START_TAG event. and all events will written into node!
readNodeWithoutChildren
in interface XmlPullParser
XmlPullParserException
public byte readNode(XmlNode node) throws XmlPullParserException, java.io.IOException
XmlPullParser
NOTE: parser must be on START_TAG event. and all events will written into node!
readNode
in interface XmlPullParser
XmlPullParserException
java.io.IOException
public byte skipNode() throws XmlPullParserException, java.io.IOException
skipNode
in interface XmlPullParser
XmlPullParserException
java.io.IOException
public int getHardLimit()
getHardLimit
in interface XmlPullParserBufferControl
public void setHardLimit(int value) throws XmlPullParserException
setHardLimit
in interface XmlPullParserBufferControl
XmlPullParserException
public int getSoftLimit()
getSoftLimit
in interface XmlPullParserBufferControl
public void setSoftLimit(int value) throws XmlPullParserException
setSoftLimit
in interface XmlPullParserBufferControl
XmlPullParserException
public int getBufferShrinkOffset()
getBufferShrinkOffset
in interface XmlPullParserBufferControl
public void setBufferShrinkable(boolean shrinkable) throws XmlPullParserException
setBufferShrinkable
in interface XmlPullParserBufferControl
XmlPullParserException
public boolean isBufferShrinkable()
isBufferShrinkable
in interface XmlPullParserBufferControl
public int getEventStart()
getEventStart
in interface XmlPullParserEventPosition
public int getEventEnd()
getEventEnd
in interface XmlPullParserEventPosition
public char[] getEventBuffer()
XmlPullParserEventPosition
NOTE: This may be internal buffer and is valud only until call to method next()- do NOT attempt modify !
getEventBuffer
in interface XmlPullParserEventPosition
protected 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