使用DOM4J生成XML文档
DOM4J是一个优秀的Java XML API,具有性能优异、功能强大和易于使用的特点,下面我将介绍如何使用DOM4J生成XML文档。

添加依赖
确保你的项目中包含DOM4J的依赖,如果你使用Maven,可以在pom.xml中添加:
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.4</version>
</dependency>
基本步骤
使用DOM4J生成XML文档的基本步骤如下:
- 创建
Document对象 - 创建根元素
- 添加子元素和属性
- 将
Document对象写入文件或输出流
示例代码
1 简单XML生成示例
import org.dom4j.*;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.FileWriter;
import java.io.IOException;
public class Dom4jXmlGenerator {
public static void main(String[] args) {
// 1. 创建Document对象
Document document = DocumentHelper.createDocument();
// 2. 创建根元素
Element root = document.addElement("students");
// 3. 添加子元素和属性
Element student1 = root.addElement("student")
.addAttribute("id", "001")
.addAttribute("gender", "male");
student1.addElement("name").addText("张三");
student1.addElement("age").addText("20");
student1.addElement("class").addText("计算机科学1班");
Element student2 = root.addElement("student")
.addAttribute("id", "002")
.addAttribute("gender", "female");
student2.addElement("name").addText("李四");
student2.addElement("age").addText("19");
student2.addElement("class").addText("软件工程2班");
// 4. 设置输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
// 5. 写入文件
try (FileWriter writer = new FileWriter("students.xml")) {
XMLWriter xmlWriter = new XMLWriter(writer, format);
xmlWriter.write(document);
xmlWriter.close();
System.out.println("XML文件生成成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
2 生成的XML内容
上述代码将生成如下XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="001" gender="male">
<name>张三</name>
<age>20</age>
<class>计算机科学1班</class>
</student>
<student id="002" gender="female">
<name>李四</name>
<age>19</age>
<class>软件工程2班</class>
</student>
</students>
高级用法
1 添加CDATA部分
Element note = root.addElement("note");
note.addCDATA("这是一些包含特殊字符的内容:<>&\"'");
2 添加命名空间
Document document = DocumentHelper.createDocument();
Element root = document.addElement("root", "http://example.com/namespace");
3 使用XPath
// 添加元素
Element student = (Element) DocumentHelper.parseText("<student/>").getRootElement();
root.add(student);
// 查询元素
List<Node> nodes = document.selectNodes("//student[@gender='male']");
4 处理特殊字符
DOM4J会自动处理XML特殊字符的转义,如果你需要保留原始字符,可以使用CDATA部分。

输出控制
DOM4J提供了多种输出控制方式:
// 紧凑格式(无缩进) OutputFormat compactFormat = OutputFormat.createCompactFormat(); XMLWriter compactWriter = new XMLWriter(System.out, compactFormat); compactWriter.write(document); // 自定义格式 OutputFormat customFormat = new OutputFormat(); customFormat.setIndentSize(4); customFormat.setNewlines(true); customFormat.setTrimText(true);
异常处理
在实际应用中,应该添加适当的异常处理:
try {
// XML生成代码
} catch (DocumentException e) {
System.err.println("XML解析错误: " + e.getMessage());
} catch (IOException e) {
System.err.println("IO错误: " + e.getMessage());
}
DOM4J提供了丰富的API来处理XML文档,以上只是基本用法,你可以根据需要探索更多高级功能。

