在Android中极力推荐的xmlpull方式解析xml。xmlpull不仅仅可以使用在Android上,同样也适用于javase,但在javase环境下,你需要自己去获取xmlpull所依赖的类库。
        环境:

kxml2-2.3.0.jar

xmlpull_1_1_3_4c.jar

以上两个jar分别从以下网站下载:

http://www.xmlpull.org/    xmlpull

http://kxml.sourceforge.net/    kxml

xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<root><student id="1" group="1"><name>张三</name><sex>男</sex><age>18</age><email>zhangsan@163.com</email><birthday>1987-06-08</birthday><memo>好学生</memo></student><student id="2" group="2"><name>李四</name><sex>女</sex><age>18</age><email>lisi@163.com</email><birthday>1987-06-08</birthday><memo>好学生</memo></student><student id="3" group="3"><name>小王</name><sex>男</sex><age>18</age><email>xiaowang@163.com</email><birthday>1987-06-08</birthday><memo>好学生</memo></student><student id="4" group="4"><name>小张</name><sex>男</sex><age>18</age><email>xiaozhang@163.com</email><birthday>1987-06-08</birthday><memo>好学生</memo></student><student id="5" group="5"><name>小明</name><sex>男</sex><age>18</age><email>xiaoming@163.com</email><birthday>1987-06-08</birthday><memo>好学生</memo></student>
</root>

Xml对应的实体bean文件:

package com.parsexml.entity;public class Student {private int id;private int group;private String name;private String sex;private int age;private String email;private String memo;private String birthday;public int getId() {return id;}public void setId(int id) {this.id = id;}public int getGroup() {return group;}public void setGroup(int group) {this.group = group;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getMemo() {return memo;}public void setMemo(String memo) {this.memo = memo;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}}

Pull解析代码:

package com.parsexml;import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;import com.parsexml.entity.Student;public class PullParseXml {public List<Student> PullParseXML(){List<Student> list=null;Student student = null;//构建XmlPullParserFactorytry {XmlPullParserFactory pullParserFactory=XmlPullParserFactory.newInstance();//获取XmlPullParser的实例XmlPullParser xmlPullParser=pullParserFactory.newPullParser();//设置输入流  xml文件xmlPullParser.setInput(Thread.currentThread().getContextClassLoader().getResourceAsStream("Student.xml"), "UTF-8");//开始int eventType=xmlPullParser.getEventType();try {while(eventType!=XmlPullParser.END_DOCUMENT){String nodeName=xmlPullParser.getName();switch (eventType) {//文档开始case XmlPullParser.START_DOCUMENT:list=new ArrayList<Student>();break;//开始节点case XmlPullParser.START_TAG://判断如果其实节点为studentif("student".equals(nodeName)){//实例化student对象student=new Student();//设置Id属性student.setId(Integer.parseInt(xmlPullParser.getAttributeValue(0)));//设置Group属性student.setGroup(Integer.parseInt(xmlPullParser.getAttributeValue(1)));}else if("name".equals(nodeName)){//设置namestudent.setName(xmlPullParser.nextText());}else if("sex".equals(nodeName)){//设置sexstudent.setSex(xmlPullParser.nextText());}else if("age".equals(nodeName)){//设置agestudent.setAge(Integer.parseInt(xmlPullParser.nextText()));}else if("email".equals(nodeName)){//设置emailstudent.setEmail(xmlPullParser.nextText());}else if("birthday".equals(nodeName)){//设置birthdaystudent.setBirthday(xmlPullParser.nextText());}else if("memo".equals(nodeName)){//设置memo属性student.setMemo(xmlPullParser.nextText());}break;//结束节点case XmlPullParser.END_TAG:if("student".equals(nodeName)){list.add(student);student=null;}break;default:break;}eventType=xmlPullParser.next();}} catch (NumberFormatException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} catch (XmlPullParserException e) {e.printStackTrace();}return list;}public static void main(String[] args) {List<Student> list=new PullParseXml().PullParseXML();for(Student student:list){System.out.println("id:"+student.getId()+"\tgroup:"+student.getGroup()+"\tname:"+student.getName()+"\tsex:"+student.getSex()+"\tage:"+student.getAge()+"\temail:"+student.getEmail()+"\tbirthday:"+student.getBirthday()+"\tmemo:"+student.getMemo());}}}

注:若工程中缺少kxml2-2.3.0.jar文件则会报以下异常信息:

你应该添加kxml2-2.3.0.jar包到你的classpath下

转载于:https://www.cnblogs.com/chaoyu/p/6436886.html

Android--使用XMLPull解析xml相关推荐

  1. Android之Pull解析XML

    一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...

  2. Android 创建与解析XML(一)—— 概述

    Android 是最常用的智能手机平台,XML 是数据交换的标准媒介,Android 中可以使用标准的XML生成器.解析器.转换器 API,对 XML 进行解析和转换. XML,相关有DOM.SAX. ...

  3. Android 天气预报【解析XML / Json文件(2种方式:手动解析、Gson库解析)】

    源码 [工程文件]:https://gitee.com/lwx001/Weather XML : activity_main.xml : <RelativeLayout xmlns:androi ...

  4. Android 初步 XML------PULL解析器

    对于XML文件,有三种解析方式  SAX(Simple API for Xml):DOM(Document Object Model):PULL解析器,各自的缺优点咋这里不详细说明. PULL解析器时 ...

  5. android用sax解析xml,详解android使用SAX解析XML文件

    解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析. DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了. 优点:整个 ...

  6. android xml sax解析,《android用SAX解析xml》

    主要的Acivity package com.xml.xml; import java.io.Serializable; import java.util.ArrayList; import java ...

  7. Android几种解析XML方式的比较

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.使用SAX解析XML SAX(Simple API for XML) 使用流式处理的方式,它并不记录所读内容的相 ...

  8. android使用sax解析xml

    随着技术的发展,现在的web已经和以前不同了.web已经逐渐像移动的方向倾斜,作为程序员的确应该拓展一下自己的知识层面.学习各方面的知识,今天就接着前几天的弄一下android的xml解析,这次就使用 ...

  9. android dom4j包,Android 创建与解析XML(五)—— Dom4j方式

    1.Dom4j概述 dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the J ...

最新文章

  1. 2022-2028年中国内衣行业研究及前瞻分析报告
  2. qt dll 1% 不是有效的win32应用程序
  3. what is the meaning of bring you up to speed?
  4. make: 警告:检测到时钟错误。您的创建可能是不完整的。
  5. halcon create_ocr_class_svm 使用SVM分类器创建OCR分类器
  6. 添加删除约束脚本 ::fn_get_sql
  7. 96. 不同的二叉搜索树
  8. 2ask调制解调信噪比matlab实现,MATLAB模拟2ASK调制误码率与信噪比关系曲线的程序...
  9. AD19自动布线出错,有些线未连接
  10. Page.IsValid 属性
  11. SQL Server 2012 读写分离设置
  12. 信息安全收集注意事项
  13. Drools 规则引擎一文读懂
  14. 小甲鱼python课后题共多少讲_小甲鱼Python第九讲课后习题--010列表
  15. 微信公众平台开发[6] —— 微信开发集成类的使用
  16. 时间序列分析_餐厅销量预测_2022_5_14
  17. 个人股权能转让给别人吗
  18. 中国物流企业家谈“物流”
  19. 原生js或者jquery获取父级元素/同级元素/下级元素
  20. 利用PDF编辑软件给PDF添加页码的操作全过程

热门文章

  1. mysql拒绝访问root用户_设置mysql的root用户允许远程登录
  2. mysql添加外键的时候报错_mysql处理添加外键时 error 150 问题
  3. 如何得出数组里最大_相邻两数的最大差值(超巧妙解法)
  4. garch预测 python_安利几个非常实用的 Python 库
  5. C#学员信息管理试题
  6. 8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,循环控制及其优化
  7. Hibernate检索1
  8. 屏幕坏点怎么产生的_修复液晶屏幕坏点的妙招
  9. Nginx添加ngx_http_headers_module模块
  10. JDBC之一:快速入门