XmlPullParser

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

XmlPullParser

org.xmlpull.v1.XmlPullParser
已知的间接子类
XmlResourceParserXML解析接口返回一个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(常量)
intCDSECTA CDATA sections was just read; this token is available only from calls to nextToken().
intCOMMENTXML注释
intDOCDECLAn XML document type declaration was just read.
intEND_DOCUMENTLogical end of the xml document.
intEND_TAGReturned from getEventType(), next(), or nextToken() when an end tag was read.
intENTITY_REFAn entity reference was just read; this token is available from nextToken() only.
StringFEATURE_PROCESS_DOCDECLThis feature determines whether the document declaration is processed.
StringFEATURE_PROCESS_NAMESPACESThis feature determines whether the parser processes namespaces.
StringFEATURE_REPORT_NAMESPACE_ATTRIBUTESThis feature determines whether namespace attributes are exposed via the attribute access methods.
StringFEATURE_VALIDATIONIf this feature is activated, all validation errors as defined in the XML 1.0 specification are reported.
intIGNORABLE_WHITESPACEIgnorable whitespace was just read.
StringNO_NAMESPACEThis constant represents the default namespace (empty string "")
intPROCESSING_INSTRUCTIONAn XML processing instruction declaration was just read.
intSTART_DOCUMENT解析器在文档的开头,处于即将阅读状态
intSTART_TAGReturned from getEventType(), next(), nextToken() when a start tag was read.
intTEXTCharacter data was read and will is available by calling getText().
Fields
public static final String[] TYPESThis 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.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值