在Java开发中,读取XML数据是常见任务,比如解析配置或接口返回。DOM4J是一个流行且易上手的XML解析工具,相比JDK自带的API写起来更直观。下面通过基础示例带你了解如何用DOM4J读取XML。

一、引入DOM4J依赖
如果使用Maven管理项目,在pom.xml中加入以下依赖即可。注意这里写的是依赖标签名称,实际文件里要用<dependency>包裹。
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
二、准备示例XML文件
假设有一个简单的用户配置文档users.xml,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="1">
<name>张三</name>
<age>28</age>
</user>
<user id="2">
<name>李四</name>
<age>32</age>
</user>
</users>
三、使用DOM4J读取XML数据
核心步骤是:创建SAXReader对象,读取文件得到Document,再通过XPath或遍历获取节点。下面代码演示如何打印所有用户的姓名和年龄。
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.util.List;
public class Dom4jDemo {
public static void main(String[] args) {
// 创建SAXReader实例
SAXReader reader = new SAXReader();
try {
// 加载XML文件得到Document
Document doc = reader.read(new File("users.xml"));
// 获取根节点users
Element root = doc.getRootElement();
// 遍历所有user子节点
List<Element> userList = root.elements("user");
for (Element user : userList) {
// 读取属性id
String id = user.attributeValue("id");
// 读取子节点name和age文本
String name = user.elementText("name");
String age = user.elementText("age");
System.out.println("id=" + id + ", name=" + name + ", age=" + age);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
四、通过XPath快速提取
如果只想取某个节点,可以用XPath。DOM4J支持selectNodes()和selectSingleNode()方法。
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.util.List;
public class XPathDemo {
public static void main(String[] args) throws Exception {
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("users.xml"));
// 使用XPath获取所有name节点
List<Element> names = doc.selectNodes("//name");
for (Element n : names) {
System.out.println(n.getText());
}
}
}
五、小结
以上演示了Java怎么读取XML数据的基础做法。DOM4J的SAXReader和Element接口非常直观,配合XPath能应对多数解析场景。实际项目中注意处理异常和文件编码,就能稳定地完成XML数据读取工作。