DOM4J读取XML最简单直接,核心三步:加依赖、解析文件、遍历元素;需注意Java 8+要求、异常捕获、编码设置及命名空间处理。

Java读取XML数据用DOM4J最简单直接,核心就三步:加依赖、解析文件、遍历元素。它比原生DOM更简洁,比SAX更易上手,适合大多数配置文件或中小型XML数据处理。
添加DOM4J依赖
Maven项目只需在pom.xml里加一行:
注意:DOM4J 2.x 需要 Java 8+,且已内置XPath支持,不用额外引jaxen。
加载并解析XML文件
用SAXReader读取,支持文件路径、InputStream、URL等多种来源:
立即学习“Java免费学习笔记(深入)”;
- 读本地文件:new SAXReader().read(new File("config.xml"))
- 读类路径资源:new SAXReader().read(this.getClass().getResourceAsStream("/data.xml"))
- 读字符串内容:new SAXReader().read(new StringReader(xmlString))
建议加上异常捕获,DOM4J抛出的是DocumentException,不是RuntimeException。
遍历节点获取数据
拿到Document后,常用操作有:
- 取根元素:document.getRootElement()
- 按标签名找子元素:element.element("user") 或 element.elements("item")
- 取属性值:element.attributeValue("id")
- 取文本内容:element.getTextTrim()(自动去首尾空格)
- 用XPath快速定位:document.selectObject("//book[@category='IT']/title/text()")
遍历时推荐用增强for循环,避免索引越界;getTextTrim()比getText()更安全,防止空格干扰解析。
常见问题提醒
DOM4J默认不校验DTD或XSD,如需验证,得手动设置SAXReader.setValidation(true)并配好实体解析器;中文乱码多因文件编码没指定,可在SAXReader构造时传入编码:new SAXReader(StandardCharsets.UTF_8);如果XML带命名空间,查询前先用element.addNamespace("ns", "http://example.com")注册,再用//ns:tag写XPath。
基本上就这些——不复杂但容易忽略编码和异常处理。跑通一个简单例子,后面读配置、解析接口返回XML就都顺了。










