PULL解析XML文件
来源:互联网 发布:mac比较好用的浏览器 编辑:程序博客网 时间:2024/06/07 07:59
PULL解析XML文件的步骤:
1, 导包
2, 创建pull解析器工厂
3, 创建解析器对象
4, 设置解析的数据源(要解析的内容)
5, 获取事件的类型(int)
6, 循环解析, 直到文档解析完成
解析实例:
XML文件:
<?xml version="1.0" encoding="UTF-8"?><students><student ><id>1</id><name>zhangsan</name><age>20</age><sex>male</sex></student><student ><id>2</id><name>lisi</name><age>21</age><sex>female</sex></student></students>
Student类:
public class Student {private int id;private String name;private String age;private String sex;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String toString() {return "Student [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";}}
public static void main(String[] args) throws XmlPullParserException, IOException {//1, 导包//2, 得到Pull解析器工厂XmlPullParserFactory factory = XmlPullParserFactory.newInstance();//3, 得到Pull解析器XmlPullParser parser = factory.newPullParser();//4, 指定要解析的文件parser.setInput(new FileReader("XML文件路径"));//5, 获取事件的状态类型int type = parser.getEventType();//获取当前解析标签的名称String tag = null;//数据集合ArrayList<Student> list = null;//当前"组装"数据的对象Student student = null;//6, 循环解析, 直到文档结束while (type!=XmlPullParser.END_DOCUMENT) {//获取标签名称tag = parser.getName();switch(type){case XmlPullParser.START_DOCUMENT://文档的开始list = new ArrayList<>();break;case XmlPullParser.START_TAG://标签的开始 if("student".equals(tag)){student = new Student();}else if("id".equals(tag)){String str = parser.nextText();student.setId(Integer.parseInt(str));}else if("name".equals(tag)){String str = parser.nextText();student.setName(str);}else if("age".equals(tag)){String str = parser.nextText();student.setAge(str);}else if("sex".equals(tag)){String str = parser.nextText();student.setSex(str);}break;case XmlPullParser.END_TAG:if("student".equals(tag))//</students>{list.add(student);}break;}//获取下一个事件的类型, 不写就死循环了!! 一定要写的type = parser.next();}for(Student s:list){System.out.println(s);}}}
但是XML文件:
<?xml version="1.0" encoding="UTF-8"?><students><student id="1"><name>zhangsan</name><age>20</age><sex>male</sex></student><student id="2"><name>lisi</name><age>21</age><sex>female</sex></student></students>
修改为:
public class DemoPull02 {/** * @param args * @throws XmlPullParserException * @throws IOException */public static void main(String[] args) throws XmlPullParserException, IOException {// 解析器工厂XmlPullParserFactory factory = XmlPullParserFactory.newInstance();//解析器XmlPullParser parser = factory.newPullParser();//设置数据源parser.setInput(new FileReader("XML文件路径"));//获取事件的类型int type = parser.getEventType();String tag = null;ArrayList<Student> list = null;Student student = null;//循环解析, 直到文档结束while (type!=XmlPullParser.END_DOCUMENT) {//值为: 1tag = parser.getName();switch (type) {case XmlPullParser.START_DOCUMENT://值为: 0list = new ArrayList<>();break;case XmlPullParser.START_TAG://值为: 2if("student".equals(tag)){//实例化studentstudent = new Student();//获取属性int count = parser.getAttributeCount();for(int i=0;i<count;i++){String attName = parser.getAttributeName(i);String attValue = parser.getAttributeValue(i);if("id".equals(attName))//如果属性名称为id , 那么需要在student中设置id{student.setId(Integer.parseInt(attValue));}}//如果确定只要一个id//student.setId(Integer.parseInt(parser.getAttributeValue(0)));}else if("name".equals(tag)){String str = parser.nextText();student.setName(str);}else if("age".equals(tag)){String str = parser.nextText();student.setAge(str);}else if("sex".equals(tag)){String str = parser.nextText();student.setSex(str);}break;case XmlPullParser.END_TAG://值为: 3if("student".equals(tag)){list.add(student);}break;}//获取下一个事件, 防止死循环type = parser.next();}for(Student s:list){System.out.println(s);}}}
0 0
- Pull解析XML文件
- Pull解析xml文件
- pull解析xml文件
- Pull解析xml文件
- pull解析xml文件
- pull解析xml文件
- pull解析xml文件
- Pull解析xml文件
- Pull解析XML文件
- pull解析xml文件
- pull解析xml文件
- Pull解析Xml文件
- Pull解析XML文件
- pull解析XML文件
- PULL解析XML文件
- pull解析XML文件
- pull解析XML文件
- pull解析XML文件
- c#访问C盘user当前用户下的文件夹
- HDU:1541 Stars(树状数组)
- Vika and Squares
- 【Spring源码--IOC容器的实现】(四)BeanDefinition的注册
- 监控Linux系统的内存和CPU,并使用excel表格绘制曲线
- PULL解析XML文件
- Intellij IDEA 与 Gitlab 实现代码上传与下载
- Android NDK开发——环境配置
- [线性代数]Note4--A的LU分解&转置-置换-向量空间
- java三大框架spring的JdbcTemplate连接数据库(C3P0)
- (模板题)poj 2115 C Looooops(扩展欧几里得算法)
- MD5加密
- HDU 2844(多重背包)
- Java EE容器