Dom4j 是 Java 中轻量、灵活的开源 XML 处理库,支持 DOM/SAX/JAXP/XPath;Maven 依赖需配置 groupId org.dom4j、artifactId dom4j、version 2.1.4;读取用 SAXReader,解析靠 getRootElement() 和 elementText();XPath 支持便捷定位,如 selectSingleNode();构建 XML 用 DocumentHelper.createDocument() 和 addElement(),输出可格式化。

Dom4j 是 Java 中一个功能强大且易用的开源 XML 处理库,支持 DOM、SAX、JAXP 和 XPath,特别适合需要灵活读写 XML 的场景。它比原生 JAXP 更简洁,比 JDOM 更轻量,是实际开发中常用的选择。
添加 Dom4j 依赖
使用 Maven 项目,直接在 pom.xml 中添加:
注意:Dom4j 2.1+ 默认要求 Java 8+,且已内置 JAXEN(XPath 支持),无需额外引入。
读取 XML 并解析根节点和子元素
用 SAXReader 加载 XML 文件或字符串,获取 Document 后遍历结构:
立即学习“Java免费学习笔记(深入)”;
- 创建
SAXReader reader = new SAXReader(); - 调用
reader.read(new File("config.xml"))或reader.read("... ") - 通过
document.getRootElement()获取根元素 - 用
element.elements("book")获取所有同名子元素,或element.element("title")获取第一个匹配子元素 - 用
element.getTextTrim()安全获取文本内容(自动去除首尾空白)
示例:解析 String id = book.attributeValue("id"); String title = book.elementText("title");
用 XPath 快速定位节点
Dom4j 对 XPath 支持友好,避免深层嵌套遍历:
-
document.selectNodes("//book[@id='101']")—— 查找所有 id=101 的 book 元素 -
document.selectSingleNode("/library/book[1]/title")—— 取第一个 book 的 title -
element.valueOf("@price")—— 直接获取属性值(返回 String)
注意:XPath 表达式区分大小写,且需确保命名空间正确(如含 namespace,需提前注册 Namespace 对象)。
构建并写入 XML 文件
新建 Document 可用 DocumentHelper.createDocument(),添加元素用 addElement(),设置属性用 addAttribute():
Element root = document.addElement("root");Element child = root.addElement("item").addAttribute("type", "info");child.setText("Hello World");- 写入文件:
XMLWriter writer = new XMLWriter(new FileWriter("output.xml")); writer.write(document); writer.close();
如需格式化输出(带缩进),用 OutputFormat.createPrettyPrint() 构造 writer。










