java xml解析 pull解析

step1 导入依赖

    <!-- https://mvnrepository.com/artifact/net.sf.kxml/kxml2 -->
	<dependency>
	    <groupId>net.sf.kxml</groupId>
	    <artifactId>kxml2</artifactId>
	    <version>2.3.0</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/xmlpull/xmlpull -->
	<dependency>
	    <groupId>xmlpull</groupId>
	    <artifactId>xmlpull</artifactId>
	    <version>1.1.3.1</version>
	</dependency>

step2 准备xml 文件:student.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<人>
	<学生>
		<姓名>张三</姓名>
		<性别>男</性别>
		<年龄>15</年龄>
		<爱好>蓝球</爱好>
	</学生>
	<学生>
		<姓名>李四</姓名>
		<性别>男</性别>
		<年龄>16</年龄>
		<爱好>足球</爱好>
	</学生>
	<学生>
		<姓名>花花</姓名>
		<性别>男</性别>
		<年龄>16</年龄>
		<爱好>吃</爱好>
	</学生>
</人>

step3 实体类 Student

package com.android.bean;

public class Student {
	private String name;
	private String sex;
	private Integer age;
	private String hobby;
	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(Integer age) {
		this.age = age;
	}
	public String getHobby() {
		return hobby;
	}
	public void setHobby(String hobby) {
		this.hobby = hobby;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", sex=" + sex + ", age=" + age + ", hobby=" + hobby + "]";
	}
	
	

}

step4 pull解析

package com.android.andriodM;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;

import org.junit.Test;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

import com.android.bean.Student;


public class PullParseTest {

	@Test
	public void pullTest() throws Exception {

		ArrayList<Student> list = null;
		Student student = null;

		// 获取xml的解析器
		XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
		parser.setInput(new FileInputStream(new File("student.xml")), "utf-8");
		// 获取当前事件类型
		int eventType = parser.getEventType();
		// 解析到文档结束就会退出循环
		while (eventType != XmlPullParser.END_DOCUMENT) {
			switch (eventType) {
			// 1 开始标签
			case XmlPullParser.START_TAG:
				// parser.getName()获取元素名字
				if ("人".equals(parser.getName())) {
					// 创建一个集合
					list = new ArrayList<Student>();

				} else if ("学生".equals(parser.getName())) {
					// 创建一个学生对象
					student = new Student();
				} else if ("姓名".equals(parser.getName())) {
					// parser.nextText():获取当前节点的下一个文本内容
					student.setName(parser.nextText());
				} else if ("性别".equals(parser.getName())) {
					student.setSex(parser.nextText());
				} else if ("年龄".equals(parser.getName())) {
					student.setAge(Integer.valueOf(parser.nextText()));
				} else if ("爱好".equals(parser.getName())) {
					student.setHobby(parser.nextText());

				}
				break;
			// 2 结束标签
			case XmlPullParser.END_TAG:
				if ("学生".equals(parser.getName())) {
					// 把学生添加到一个集合
					list.add(student);

					break;

				}
			}
			// 解析下一个元素
			eventType = parser.next();


		}
		// 遍历集合
		for (Student student1 : list) {
			System.out.println(student1);
		}

	}
}

step5  结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值