Java怎么读取XML数据 DOM4J入门教程

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

Java读取XML数据用DOM4J最简单直接,核心就三步:加依赖、解析文件、遍历元素。它比原生DOM更简洁,比SAX更易上手,适合大多数配置文件或中小型XML数据处理。

添加DOM4J依赖

Maven项目只需在pom.xml里加一行:


  org.dom4j
  dom4j
  2.1.4

注意:DOM4J 2.x 需要 Java 8+,且已内置XPath支持,不用额外引jaxen。

加载并解析XML文件

SAXReader读取,支持文件路径、InputStream、URL等多种来源:

  • 读本地文件: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就都顺了。