工作中常用的XML解析Java代码实现

本文介绍了一种使用Java的Pull解析方式处理XML文件的方法。通过定义JavaBean类存储XML数据,并用Pull解析器逐标签解析XML文件,将解析后的学生信息存入List集合中。示例代码展示了如何创建解析器、读取文件并解析具体标签。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下XML为例  进行Java代码解析
<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student>
		<name>刘诗诗</name>
		<age>26</age>
	</student>
	<student>
		<name>杨幂</name>
		<age>28</age>
	</student>
</students>
定义一个JavaBean进行解析
<pre name="code" class="html">package cn.an0327.pull;
public class Student {

	private String name;
	private String age;
	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;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
}
代码实现
<pre name="code" class="html">import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

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

public class TestPull01 {

	/**
	 * 1、创建解析器工厂
	 * 2、根据解析器工厂创建解析器
	 * 3、把要操作的文件放到解析器里面
	 */
	public static void main(String[] args) throws Exception {
		//创建解析器工厂
		XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
		//根据工厂创建解析器
		XmlPullParser parser = factory.newPullParser();
		//得到要操作文件的输入流
		InputStream in = new FileInputStream("src/stu.xml");
		//把要操作的文件放到解析器里面
		parser.setInput(in, "utf-8");
		//开始解析
		
		int type = 0;
		List<Student> list = null;
		Student student = null;
		//如果当前解析到的标签,不是文档的结束,继续操作
		while((type=parser.getEventType())!=XmlPullParser.END_DOCUMENT) {
			//得到当前解析的标签的名称
			String tagName = parser.getName();
			/*
			 * 1、如果解析到students ,创建list集合
			 * 2、如果解析到student,创建student对象
			 * 3、如果解析到name和age,获取标签里面内容
			 * 4、把内容放到student对象里面
			 * */
			switch(type) {
			case XmlPullParser.START_TAG:
				if("students".equals(tagName)) {
					//创建list集合
					list = new ArrayList<Student>();
				} else if("student".equals(tagName)) {
					student = new Student();
				} else if("name".equals(tagName)) {
					//得到标签里面的值
					String name = parser.nextText();
					//把name值放到对象里面
					student.setName(name);
				} else if("age".equals(tagName)) {
					String age = parser.nextText();
					student.setAge(age);
				}
				break;
			case XmlPullParser.END_TAG:
				//当解析到结束的student时候,把对象放到list里面
				if("student".equals(tagName)) {
					list.add(student);
				}
				break;
			}
			//向下执行
			parser.next();
		}
		
		
		//遍历list集合
		for (Student stu : list) {
			System.out.println(stu.toString());
		}
	}

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值