Dom4j读取Xml文件

前言

现在市面上读取xml的方式有很多,但是我觉得这不需要掌握太多,大致了解一下,知道有哪些,然后掌握其中的一两种就差不多了。今天记录一下Dom4j读取xml文件这一种方式。

准备工作

1.创建项目

创建一个maven项目,输入dom4j、junit,导入相应依赖。junit是用来测试的。
Dom4j读取Xml文件_第1张图片
有上面几个包就对了。

2.准备一个xml文件

这里我是自己写一个。大家可以网上找一个比较复杂一点的xml用作练习。
我是将这个xml放在src/main/resources/xml文件夹下。


<all>
    <one>
        <name id="zs">张三name>
        <age>18age>
        <interest>
            <inte>唱歌inte>
            <inte>跳舞inte>
            <inte>弹琴inte>
        interest>
    one>
    <one>
        <name id="ls">李四name>
        <age>19age>
        <interest>
            <inte>唱歌inte>
            <inte>敲代码inte>
            <inte>斗牛inte>
        interest>
    one>
all>

创建一个实体类

我们会将读取的xml内容放入一个实体中,因此需要创建一个实体类,我写了一个Student实体。

package entity;

import java.util.List;

public class Sdudent {
	private String name;
	private int age;
	private List<String> interesting;
	private String id;
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
	}
	public List<String> getInteresting() {
		return interesting;
	}
	public String getId() {
		return id;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public void setInteresting(List<String> interesting) {
		this.interesting = interesting;
	}
	public void setId(String id) {
		this.id = id;
	}
	@Override
	public String toString() {
		return "Sdudent [name=" + name + ", age=" + age + ", interesting=" + interesting + ", id=" + id + "]";
	}
	
}


测试

好吧,比较懒就没有分开写,直接写在测试中,大家明白这个意思就行了。基本每一行都有注释,也就是一些API,照着写就完事了。

package dom4jReadXml;

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

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import entity.Sdudent;

public class TestDemo {
	@Test
	public void test1() throws Exception{
		//sax解析器
		SAXReader r = new SAXReader();
		//获取xml文件
		File f = new File(new File("").getCanonicalPath()+"/src/main/resources/xml/stu.xml");
		//将xml文件解析成一个docment对象
		Document doc = r.read(f);
		//获取对象的跟标签
		Element root = doc.getRootElement();
		//获取跟标签的子标签one
		List<Element> onelist = root.elements();
		//用于存储解析后的信息集合
		List<Sdudent> sdudentList = new ArrayList<Sdudent>();
		//遍历子标签
		for(Element one:onelist){
			//获取one标签的子标签
			List<Element> stuList = one.elements();
			//用于存储每一个one转换后的信息
			Sdudent student = new Sdudent();
			for(Element stu:stuList){
				//获取标签的名字
				String name = stu.getName();
				//如果是name标签就将值放入对象中
				if("name".equals(name)){
					//获取标签的值(去除空格)
					String value = stu.getTextTrim();
					//将值放入实体对象中
					student.setName(value);
					//获取id属性
					String id = stu.attributeValue("id");
					student.setId(id);
				}else if("age".equals(name)){
					String value = stu.getTextTrim();
					//因为实体中age是int类型,这里需要将String转为integer
					student.setAge(Integer.parseInt(value));
				}else if("interest".equals(name)){
					//获取inte标签
					List<Element> ilist = stu.elements();
					//用于存储每一个兴趣
					List<String> inlist = new ArrayList<String>();
					for(Element i:ilist){
						String na = i.getTextTrim();
						inlist.add(na);
					}
					student.setInteresting(inlist);
				}
			}
			//将每一个实体遍历完后放入集合中
			sdudentList.add(student);
		}
		//打印集合
		System.out.println(sdudentList);
	}
}


结果

可以看出将已经将xml中的信息完全存入集合中了,正面读取成功!

[Sdudent [name=张三, age=18, interesting=[唱歌, 跳舞, 弹琴], id=zs], Sdudent [name=李四, age=19, interesting=[唱歌, 敲代码, 斗牛], id=ls]]

结束语

上面的内容已经可以做一些开发使用了,当然了dom4j并没有那么少的内容,深层次的我觉得等我们用到的时候再去了解就可以了。暂时就先记录到这把~

你可能感兴趣的:(Java相关,xml,java,maven,dom,DOM4J,XML)