Java项目中经常需要解析或生成XML,DOM4J凭借简洁的API和良好的性能成为常用选择。下面介绍如何使用DOM4J完成XML的读取与写入。

一、环境准备
在项目中引入DOM4J依赖,以Maven为例:
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
二、使用DOM4J读取XML
假设有文件 book.xml 内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<library>
<book id="1">
<name>Java编程思想</name>
<author>Bruce Eckel</author>
</book>
</library>
通过 SAXReader 读取并遍历节点:
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 ReadDemo {
public static void main(String[] args) throws DocumentException {
// 创建SAXReader对象
SAXReader reader = new SAXReader();
// 加载XML文件
Document doc = reader.read(new File("book.xml"));
// 获取根节点
Element root = doc.getRootElement();
// 遍历book节点
List<Element> books = root.elements("book");
for (Element book : books) {
String id = book.attributeValue("id");
String name = book.elementText("name");
String author = book.elementText("author");
System.out.println("id=" + id + ", name=" + name + ", author=" + author);
}
}
}
三、使用DOM4J写入XML
使用 DocumentHelper 构建文档并通过 XMLWriter 保存:
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.FileOutputStream;
public class WriteDemo {
public static void main(String[] args) throws Exception {
// 创建文档
Document doc = DocumentHelper.createDocument();
// 添加根节点
Element root = doc.addElement("library");
// 添加子节点
Element book = root.addElement("book");
book.addAttribute("id", "2");
book.addElement("name").setText("Effective Java");
book.addElement("author").setText("Joshua Bloch");
// 设置输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
// 写入文件
XMLWriter writer = new XMLWriter(new FileOutputStream("out.xml"), format);
writer.write(doc);
writer.close();
}
}
四、注意事项
- 读取时若XML含命名空间,需用 setNamespaceAware 处理。
- 写文件建议明确编码,避免中文乱码。
- 代码中的 elementText() 方法可直接获取子元素文本。
通过上述方式,你可以轻松使用DOM4J完成XML的读取与写入操作。