DOM4J是java中操作xml的高效库,支持增删改查。首先通过maven或gradle引入依赖;使用SAXReader读取XML并解析节点信息;通过addElement添加新元素;修改现有元素内容后,需用XMLWriter将Document写回文件;删除节点时应使用Iterator.remove()避免异常,并格式化输出保存。所有操作均需重新写入文件以持久化结果。

使用DOM4J操作XML文件在java开发中非常常见,尤其适用于需要解析、修改或生成XML结构的场景。DOM4J是一个开源的、易用且高性能的Java库,支持XPath、命名空间和灵活的树形结构操作。下面介绍如何使用DOM4J实现XML文件的增删改查(CRUD)操作。
引入DOM4J依赖
如果你使用Maven项目,在pom.xml中添加以下依赖:
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
Gradle项目则添加:
implementation ‘org.dom4j:dom4j:2.1.3’
读取XML文件并解析(查)
使用SAXReader读取XML文件,获取Document对象后可遍历节点。
示例XML(students.xml):
立即学习“Java免费学习笔记(深入)”;
<?xml version=”1.0″ encoding=”UTF-8″?>
<school>
<student id=”1″>
<name>张三</name>
<age>20</age>
</student>
<student id=”2″>
<name>李四</name>
<age>22</age>
</student>
</school>
Java代码读取并打印所有学生信息:
SAXReader reader = new SAXReader();
Document document = reader.read(new File(“students.xml”));
Element root = document.getRootElement();
for (Iterator i = root.elementIterator(“student”); i.hasNext();) {
Element student = (Element) i.next();
String id = student.attributeValue(“id”);
String name = student.elementText(“name”);
String age = student.elementText(“age”);
System.out.println(“ID: ” + id + “, 姓名: ” + name + “, 年龄: ” + age);
}
新增XML节点(增)
在根元素下添加新的student节点:
Element newStudent = root.addElement(“student”);
newStudent.addAttribute(“id”, “3”);
newStudent.addElement(“name”).setText(“王五”);
newStudent.addElement(“age”).setText(“21”);
// 保存到文件
XMLWriter writer = new XMLWriter(new FileWriter(“students.xml”));
writer.write(document);
writer.close();
注意:每次修改后需重新写入文件才能持久化。
修改XML节点内容(改)
将id为”1″的学生年龄改为21:
for (Iterator i = root.elementIterator(“student”); i.hasNext();) {
Element student = (Element) i.next();
if (“1”.equals(student.attributeValue(“id”))) {
student.element(“age”).setText(“21”);
break;
}
}
// 保存修改
XMLWriter writer = new XMLWriter(new FileWriter(“students.xml”));
writer.write(document);
writer.close();
删除XML节点(删)
删除id为”2″的学生节点:
for (Iterator i = root.elementIterator(“student”); i.hasNext();) {
Element student = (Element) i.next();
if (“2”.equals(student.attributeValue(“id”))) {
i.remove(); // 使用迭代器安全删除
break;
}
}
// 保存结果
Outputformat format = OutputFormat.createPrettyPrint(); // 格式化输出
XMLWriter writer = new XMLWriter(new FileWriter(“students.xml”), format);
writer.write(document);
writer.close();
基本上就这些。DOM4J的API设计直观,结合Iterator和Element方法能高效完成XML操作。关键点是修改后记得写回文件,并注意使用Iterator.remove()避免并发修改异常。


