一、基本介绍
Android中已经集成了xmlpull解析器,所以使用XmlPullParser类非常方便,不需要从外部导入所依赖的Jar包,Pull解析器在解析xml文件的性能上是非常优秀的。
二、例子
读取到xml的声明返回数字0 START_DOCUMENT;
读取到xml的结束返回数字1 END_DOCUMENT ;
读取到xml的开始标签返回数字2 START_TAG
读取到xml的结束标签返回数字3 END_TAG
读取到xml的文本返回数字4 TEXT
.xml文件
- <?xmlversion="1.0"encoding="UTF-8"?>
- <people>
- <personid="001">
- <name>XY1</name>
- <age>22</age>
- </person>
- <personid="002">
- <name>XY2</name>
- <age>22</age>
- </person>
- </people>
.解析类
- publicclassPersonService
- {
- publicListgetPeople(InputStreamxml)throwsException
- {
- Listlst=null;
- Personperson=null;
- //获得pull解析器工厂
- XmlPullParserFactorypullParserFactory=XmlPullParserFactory.newInstance();
- //获取XmlPullParser的实例
- XmlPullParserpullParser=pullParserFactory.newPullParser();
- //设置需要解析的XML数据
- pullParser.setInput(xml,"UTF-8");
- //取得事件
- intevent=pullParser.getEventType();
- //若为解析到末尾
- while(event!=XmlPullParser.END_DOCUMENT)//文档结束
- {
- //节点名称
- StringnodeName=pullParser.getName();
- switch(event)
- {
- caseXmlPullParser.START_DOCUMENT://文档开始
- lst=newArrayList();
- break;
- caseXmlPullParser.START_TAG://标签开始
- if("person".equals(nodeName))
- {
- Stringid=pullParser.getAttributeValue(0);
- person=newPerson();
- person.setId(id);
- }
- if("name".equals(nodeName))
- {
- Stringname=pullParser.nextText();
- person.setName(name);
- }
- if("age".equals(nodeName))
- {
- intage=Integer.valueOf(pullParser.nextText());
- person.setAge(age);
- }
- break;
- caseXmlPullParser.END_TAG://标签结束
- if("person".equals(nodeName))
- {
- lst.add(person);
- person=null;
- }
- break;
- }
- event=pullParser.next();//下一个标签
- }
- returnlst;
- }
- }