Dom4j读取Xml文件

前言

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

准备工作

1.创建项目

创建一个maven项目,输入dom4j、junit,导入相应依赖。junit是用来测试的。
在这里插入图片描述
有上面几个包就对了。

2.准备一个xml文件

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

<?xml version="1.0" encoding="UTF-8"?>
<all>
    <one>
        <name id="zs">张三</name>
        <age>18</age>
        <interest>
            <inte>唱歌</inte>
            <inte>跳舞</inte>
            <inte>弹琴</inte>
        </interest>
    </one>
    <one>
        <name id="ls">李四</name>
        <age>19</age>
        <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并没有那么少的内容,深层次的我觉得等我们用到的时候再去了解就可以了。暂时就先记录到这把~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个问题我可以回答。以下是Java使用dom4j读取XML文件的基本步骤: 1. 导入dom4j的jar包 你可以通过maven或手动下载jar包的方式导入dom4j的jar包。 2. 创建SAXReader对象 SAXReader是dom4j的核心类,用于读取XML文件并将其转换为Document对象。 3. 加载XML文件 使用SAXReader对象的read方法加载XML文件,并将其转换为Document对象。 4. 获取根节点 通过Document对象的getRootElement方法获取XML文件的根节点。 5. 遍历节点 可以使用递归的方式遍历XML文件的节点,获取节点的名称、属性、子节点等信息。 下面是一个简单的示例代码: ```java import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import java.io.File; public class Dom4jDemo { public static void main(String[] args) { try { // 创建SAXReader对象 SAXReader reader = new SAXReader(); // 加载XML文件 Document document = reader.read(new File("example.xml")); // 获取根节点 Element root = document.getRootElement(); // 遍历节点 print(root); } catch (Exception e) { e.printStackTrace(); } } public static void print(Element element) { // 输出节点名称 System.out.println(element.getName()); // 输出节点属性 List<Attribute> attributes = element.attributes(); for (Attribute attribute : attributes) { System.out.println(attribute.getName() + ": " + attribute.getValue()); } // 输出子节点 List<Element> elements = element.elements(); for (Element e : elements) { print(e); } } } ``` 以上是一个简单的dom4j读取XML文件的示例代码,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值