XmlPullParser

在Android中,如果要想完成PULL解析处理需要
org.xmlpull.v1.XmlPullParserFactory类org.xmlpull.v1.XmlPullParser接口的支持,XmlpullParserFatory工厂类的主要功能是可以通过里面提供的newPullParser()方法取得一个XmlPullParser接口的对象
公共接口

XmlPullParser

org.xmlpull.v1.XmlPullParser
已知的间接子类
XmlResourceParser XML解析接口返回一个XML资源。 

类概述


XML拉解析器是一个接口,定义分析功能提供的XMLPULL V1的API

有以下不同的解析器,根据功能设置的不同分别为:

  • non-validating 解析器在XML 1.0规范定义当FEATURE_PROCESS_DOCDECL被设置为true
  • validating parser XML 1.0规范中定义FEATURE_VALIDATION是true时 (and t这意味着,FEATURE_PROCESS_DOCDECL是true)
  • when FEATURE_PROCESS_DOCDECL is false (这是默认的,如果需要不同的值,必须在解析之前开始改变) 然后解析器的根据XML 1.0 符合 non-validating 解析器的条件下,没有DOCDECL存在于XML文档中(内部实体仍然可以定义 这种运作模式的目的是在受限的环境中运作,如J2ME的。
有两个关键方法:next()和nextToken()。尽管next()提供了获得高水平的解析事件,nextToken()可以访问到较低层次的标识
 
当前的事件状态的解析器可以确定通过调用getEventType()方法。最初,解析器在START_DOCUMENT状态。
 
next()方法推动解析器到下一个事件。int的返回值下决定当前解析器的状态,完全相同的返回值以下调用getEventType()。
 
以下事件类型被next()
 
START_TAG
一个XML开始标记读取.
TEXT
文本内容被阅读;文本内容可以检索使用getText()方法。(当在验证模式下next()将不会报告可忽略的空格,使用nextToken()而不是)

END_TAG

一个结束标记被读取

END_DOCUMENT

没有更多的事件是可用
import java.io.IOException;
 import java.io.StringReader;

 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlPullParserFactory;

 public class SimpleXmlPullApp
 {

     public static void main (String args[])
         throws XmlPullParserException, IOException
     {
         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
         factory.setNamespaceAware(true);
         XmlPullParser xpp = factory.newPullParser();

         xpp.setInput( new StringReader ( "<foo>Hello World!</foo>" ) );
         int eventType = xpp.getEventType();
         while (eventType != XmlPullParser.END_DOCUMENT) {
          if(eventType == XmlPullParser.START_DOCUMENT) {
              System.out.println("Start document");
          } else if(eventType == XmlPullParser.START_TAG) {
              System.out.println("Start tag "+xpp.getName());
          } else if(eventType == XmlPullParser.END_TAG) {
              System.out.println("End tag "+xpp.getName());
          } else if(eventType == XmlPullParser.TEXT) {
              System.out.println("Text "+xpp.getText());
          }
          eventType = xpp.next();
         }
         System.out.println("End document");
     }
 }
 

 上面的例子将生成如下输出:

 

Start document
 Start tag foo
 Text Hello World!
 End tag foo
 End document

 

 

Summary(概要)


Constants(常量)
int CDSECT A CDATA sections was just read; this token is available only from calls to nextToken().
int COMMENT XML注释
int DOCDECL An XML document type declaration was just read.
int END_DOCUMENT Logical end of the xml document.
int END_TAG Returned from getEventType(), next(), or nextToken() when an end tag was read.
int ENTITY_REF An entity reference was just read; this token is available from nextToken() only.
String FEATURE_PROCESS_DOCDECL This feature determines whether the document declaration is processed.
String FEATURE_PROCESS_NAMESPACES This feature determines whether the parser processes namespaces.
String FEATURE_REPORT_NAMESPACE_ATTRIBUTES This feature determines whether namespace attributes are exposed via the attribute access methods.
String FEATURE_VALIDATION If this feature is activated, all validation errors as defined in the XML 1.0 specification are reported.
int IGNORABLE_WHITESPACE Ignorable whitespace was just read.
String NO_NAMESPACE This constant represents the default namespace (empty string "")
int PROCESSING_INSTRUCTION An XML processing instruction declaration was just read.
int START_DOCUMENT 解析器在文档的开头,处于即将阅读状态
int START_TAG Returned from getEventType(), next(), nextToken() when a start tag was read.
int TEXT Character data was read and will is available by calling getText().
Fields
public static final String[] TYPES This array can be used to convert the event type integer constants such as START_TAG or TEXT to to a string.
Public Methods
abstract void defineEntityReplacementText(String entityName, String replacementText)
Set new value for entity replacement text as defined in   XML 1.0 Section 4.5 Construction of Internal Entity Replacement Text.
abstract int getAttributeCount()
Returns the number of attributes of the current start tag, or -1 if the current event type is not START_TAG
abstract String getAttributeName(int index)
Returns the local name of the specified attribute if namespaces are enabled or just attribute name if namespaces are disabled.
abstract String getAttributeNamespace(int index)
Returns the namespace URI of the attribute with the given index (starts from 0).
abstract String getAttributePrefix(int index)
Returns the prefix of the specified attribute Returns null if the element has no prefix.
abstract String getAttributeType(int index)
Returns the type of the specified attribute If parser is non-validating it MUST return CDATA.
abstract String getAttributeValue(int index)
Returns the given attributes value.
abstract String getAttributeValue(String namespace, String name)
Returns the attributes value identified by namespace URI and namespace localName.
abstract int getColumnNumber()
Returns the current column number, starting from 0.
abstract int getDepth()
Returns the current depth of the element.
abstract int getEventType()
Returns the type of the current event (START_TAG, END_TAG, TEXT, etc.)
abstract boolean getFeature(String name)
Returns the current value of the given feature.
abstract String getInputEncoding()
Returns the input encoding if known, null otherwise.
abstract int getLineNumber()
Returns the current line number, starting from 1.
abstract String getName()
For START_TAG or END_TAG events, the (local) name of the current element is returned when namespaces are enabled.
abstract String getNamespace()
Returns the namespace URI of the current element.
abstract String getNamespace(String prefix)
Returns the URI corresponding to the given prefix, depending on current state of the parser.
abstract int getNamespaceCount(int depth)
Returns the numbers of elements in the namespace stack for the given depth.
abstract String getNamespacePrefix(int pos)
Returns the namespace prefix for the given position in the namespace stack.
abstract String getNamespaceUri(int pos)
Returns the namespace URI for the given position in the namespace stack If the position is out of range, an exception is thrown.
abstract String getPositionDescription()
Returns a short text describing the current parser state, including the position, a description of the current event and the data source if known.
abstract String getPrefix()
Returns the prefix of the current element.
abstract Object getProperty(String name)
Look up the value of a property.
abstract String getText()
Returns the text content of the current event as String.
abstract char[] getTextCharacters(int[] holderForStartAndLength)
Returns the buffer that contains the text of the current event, as well as the start offset and length relevant for the current event.
abstract boolean isAttributeDefault(int index)
Returns if the specified attribute was not in input was declared in XML.
abstract boolean isEmptyElementTag()
Returns true if the current event is START_TAG and the tag is degenerated (e.g.
abstract boolean isWhitespace()
Checks whether the current TEXT event contains only whitespace characters.
abstract int next()
Get next parsing event - element content wil be coalesced and only one TEXT event must be returned for whole element content (comments and processing instructions will be ignored and entity references must be expanded or exception mus be thrown if entity reference can not be expanded).
abstract int nextTag()
Call next() and return event if it is START_TAG or END_TAG otherwise throw an exception.
abstract String nextText()
If current event is START_TAG then if next element is TEXT then element content is returned or if next event is END_TAG then empty string is returned, otherwise exception is thrown.
abstract int nextToken()
This method works similarly to next() but will expose additional event types (COMMENT, CDSECT, DOCDECL, ENTITY_REF, PROCESSING_INSTRUCTION, or IGNORABLE_WHITESPACE) if they are available in input.
abstract void require(int type, String namespace, String name)
Test if the current event is of the given type and if the namespace and name do match.
abstract void setFeature(String name, boolean state)
Use this call to change the general behaviour of the parser, such as namespace processing or doctype declaration handling.
abstract void setInput(Reader in)
Set the input source for parser to the given reader and resets the parser.
abstract void setInput(InputStream inputStream, String inputEncoding)
Sets the input stream the parser is going to process.
abstract void setProperty(String name, Object value)
Set the value of a property.

你可能感兴趣的:(parser)