Android解析xml(3)---Pull解析
来源:互联网 发布:威廉 切尔西 知乎 编辑:程序博客网 时间:2024/04/29 18:40
除了可以使用SAX和DOM解析xml文件外,还可以使用Android系统内置的Pull解析器来解析xml文件。Pull解析器的运行方式与SAX解析器相似。它提供了类似的事件,如开始元素的结束元素事件。使用parser.next()可以进入下一个元素并触发相应事件,当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型元素的值。
Pull解析器有五种事件状态: START_DOCUMENT —> 类似于SAX解析中的startDocument()
START_TAG —> 类似于SAX解析中的startElement() TEXT —> 类似于SAX中的characters()
END_TAG —> 类似于SAX中的endElement() END_DOCUMENT —>
类似于SAX中的endDocument()
在Android解析xml(1)—SAX解析基础上修改StudyParser
import java.io.InputStream;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserFactory;import android.util.Log;import com.example.data.Study;public class StudyParser { public static Study parse(InputStream is) { Study study = null; try { XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser(); parser.setInput(is, "UTF-8"); int eventType = parser.getEventType(); while(eventType != XmlPullParser.END_DOCUMENT){ switch (eventType) { case XmlPullParser.START_DOCUMENT: study = new Study(); break; case XmlPullParser.START_TAG: String tagName = parser.getName(); //如果标签名是<study>得到属性id值 if(tagName.equalsIgnoreCase(Study.STUDY)){ study.mId = Integer.parseInt(parser.getAttributeValue(null, Study.ID)); } //如果标签名是<topic> else if(tagName.equalsIgnoreCase(Study.TOPIC)){ study.mTopic = parser.nextText(); } //如果标签名是<content> else if(tagName.equalsIgnoreCase(Study.CONTENT)){ study.mContent = parser.nextText(); } //如果标签名是<author> else if(tagName.equalsIgnoreCase(Study.AUTHOR)){ study.mAuthor = parser.nextText(); } //如果标签名是<date> else if(tagName.equalsIgnoreCase(Study.DATE)){ study.mDate = parser.nextText(); } break; default: break; } eventType = parser.next(); } } catch(Exception ex) { Log.d("XML", "StudyParser: parse() failed"); study = null; } return study; }}
源码下载
0 0
- Android解析xml(3)---Pull解析
- Android Pull解析xml
- android pull 解析xml
- android PULL 解析XML
- Android Pull解析xml
- Android Pull 解析 XML
- Android Pull 解析 XML
- Android Pull解析xml
- Android PULL解析XML
- Android Pull解析xml
- Android PULL解析XML
- android xml-----Pull解析
- android pull解析xml
- Android Pull 解析 Xml
- Android Pull解析xml
- Android PULL解析XML
- Android XML Pull解析
- android,pull解析xml
- 动态规划初步总结(1)(51Nod,CODE[VS]为例题)
- Gartner:以下5种情况公司应该选择私有云而不是公有云
- 关于修改工具栏查询功能
- Kotlin学习笔记——属性和字段
- Django学习随手记(五)
- Android解析xml(3)---Pull解析
- HashMap
- PHP零碎笔记
- drush 安装的问题
- nginx源码初读(11)--让烦恼从数据结构开始(ngx_command/ngx_module/ngx_conf)
- mysqlcppconn之ConnectOptionsMap的使用
- 判断上传图片类型和大小
- jquery ajax监听事件
- Hash表和hashCode()方法