Android API学习之XmlPullParser

来源:互联网 发布:volatile c语言 编辑:程序博客网 时间:2024/06/05 04:15

Android API学习之XmlPullParser

公共方法:


pulic abstarct int getEventType()

方法功能描述

返回当前事件类型(事件类型包括START_TAG, END_TAG, TEXT, START_DOCUMENT,END_DOCUMENT等等)


public abstarct String nextText()

方法功能描述

如果当前事件是START_TAG,并且下一个元素是TEXT,该方法将返回元素包含的内容;
如果下一个事件END_TAG,该方法将返回空字符串,另外的情况将抛出异常。如果调用方法成功解析器将被自动移动到END_TAG位置

这个方法即可以用来解析空元素也可以用来解析非空元素,例如:

1. <tag>foo</tag>(这个表示非空元素)2. <tag></tag>(这个表示空元素,<tag/>和它相同)

它们可以用相同的代码来解析

p.nextTag();p.requireEvent(p.START_TAG, "", "tag");String content = p.nextText(); p.requireEvent(p.END_TAG, "", "tag"); 

这个方法和nextTag方法一起使用可以很容易的解析没有复杂内容的xml。

方法的内容实现原理如下:

 if(getEventType() != START_TAG) {    throw new XmlPullParserException("parser must be on START_TAG to read next text", this, null);    }    int eventType = next();    if(eventType == TEXT) {          String result = getText();          eventType = next();          if(eventType != END_TAG) {                throw new XmlPullParserException("event TEXT it must be immediately followed by END_TAG", this, null);           }           return result;    }  else if(eventType == END_TAG) {    return "";    }  else {          throw new XmlPullParserException("parser must be on START_TAG or TEXT to read text", this, null);    }  

警告:在API 14版本以前,XmlPullParser是通过android.util.Xml来获取,因此调用这个方法成功之后,解析器有可能无法被自动移动到END_TAG位置,但是你可以利用手动的方式来实现

 String text = xpp.nextText();    if (xpp.getEventType() != XmlPullParser.END_TAG) {    xpp.next();    } 

可能抛出的异常

XmlPullParserException
IOException


public abstract int next ()

方法功能描述

获取下一个解析事件,元素内容将被合并在一起,只有一个TEXT事件必须返回所有的元素内容(注释和处理指令会被忽略,实体引用必须能够展开,否则解析器将会抛出异常),如果元素内容为空,解析器将不会上报TEXT事件

空元素(比如<tag/>) 解析过程中会上报两个分离的START_TAG, END_TAG事件,无内容元素 <tag></tag>也一样

可能抛出的异常

XmlPullParserException
IOException


版权声明:原创作品版权归作者所有,转载请注明出处,未经允许禁止私自印刷及出版。一经发现作者将依法追究其法律责任。

与我联:QQ群539225664


0 0
原创粉丝点击