|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.gjt.xpp.impl.pullparser.PullParser
public class PullParser
XML Pull Parser (XPP) allows to pull XML events from input stream. Advantages:
| Field Summary | |
|---|---|
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
|
| Fields inherited from interface org.gjt.xpp.XmlPullParser |
|---|
CONTENT, END_DOCUMENT, END_TAG, START_TAG |
| Constructor Summary | |
|---|---|
PullParser()
Create instance of pull parser. |
|
| Method Summary | |
|---|---|
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. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
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
| Constructor Detail |
|---|
public PullParser()
| Method Detail |
|---|
public void setInput(java.io.Reader reader)
setInput in interface XmlPullParserpublic void setInput(char[] buf)
setInput in interface XmlPullParser
public void setInput(char[] buf,
int off,
int len)
throws XmlPullParserException
XmlPullParser
setInput in interface XmlPullParserXmlPullParserExceptionpublic void reset()
reset in interface XmlPullParserpublic boolean isAllowedMixedContent()
XmlPullParser
isAllowedMixedContent in interface XmlPullParserpublic void setAllowedMixedContent(boolean enable)
setAllowedMixedContent in interface XmlPullParserpublic boolean isNamespaceAware()
XmlPullParser
isNamespaceAware in interface XmlPullParser
public void setNamespaceAware(boolean awareness)
throws XmlPullParserException
setNamespaceAware in interface XmlPullParserXmlPullParserExceptionpublic boolean isNamespaceAttributesReporting()
XmlPullParser
isNamespaceAttributesReporting in interface XmlPullParserpublic void setNamespaceAttributesReporting(boolean enable)
setNamespaceAttributesReporting in interface XmlPullParserpublic java.lang.String getNamespaceUri()
XmlPullParser
getNamespaceUri in interface XmlPullParserpublic java.lang.String getLocalName()
XmlPullParser
getLocalName in interface XmlPullParserpublic java.lang.String getPrefix()
XmlPullParser
getPrefix in interface XmlPullParserpublic java.lang.String getRawName()
XmlPullParser
getRawName in interface XmlPullParserpublic 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 XmlPullParserXmlPullParserExceptionpublic int getDepth()
XmlPullParser
getDepth in interface XmlPullParserpublic 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 XmlPullParserXmlPullParserException
public 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 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 XmlPullParserXmlPullParserException
java.io.IOExceptionpublic byte getEventType()
XmlPullParser
getEventType in interface XmlPullParser
public boolean isWhitespaceContent()
throws XmlPullParserException
isWhitespaceContent in interface XmlPullParserXmlPullParserException
public int getContentLength()
throws XmlPullParserException
XmlPullParserNOTE: parser must be on CONTENT event.
getContentLength in interface XmlPullParserXmlPullParserException
public java.lang.String readContent()
throws XmlPullParserException
readContent in interface XmlPullParserXmlPullParserException
public void readEndTag(XmlEndTag etag)
throws XmlPullParserException
readEndTag in interface XmlPullParserXmlPullParserException
public void readStartTag(XmlStartTag stag)
throws XmlPullParserException
readStartTag in interface XmlPullParserXmlPullParserException
public void readNodeWithoutChildren(XmlNode node)
throws XmlPullParserException
XmlPullParserNOTE: parser must be on START_TAG event. and all events will written into node!
readNodeWithoutChildren in interface XmlPullParserXmlPullParserException
public 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 XmlPullParserXmlPullParserException
java.io.IOException
public byte skipNode()
throws XmlPullParserException,
java.io.IOException
skipNode in interface XmlPullParserXmlPullParserException
java.io.IOExceptionpublic int getHardLimit()
getHardLimit in interface XmlPullParserBufferControl
public void setHardLimit(int value)
throws XmlPullParserException
setHardLimit in interface XmlPullParserBufferControlXmlPullParserExceptionpublic int getSoftLimit()
getSoftLimit in interface XmlPullParserBufferControl
public void setSoftLimit(int value)
throws XmlPullParserException
setSoftLimit in interface XmlPullParserBufferControlXmlPullParserExceptionpublic int getBufferShrinkOffset()
getBufferShrinkOffset in interface XmlPullParserBufferControl
public 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()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||