Java读取解析XML文件实例
XML作为一种通用的数据交换格式,在Java开发中经常需要读取和解析其中的内容。Java本身提供了多种XML解析方式,其中DOM解析和SAX解析是最基础的两种,本文将以DOM解析为例,演示如何读取并解析一个XML文件,获取其中的节点信息。
准备测试XML文件
首先我们需要准备一个用于测试的XML文件,假设文件名为user_info.xml,内容如下,包含了用户的基本信息节点:
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="1">
<name>张三</name>
<age>25</age>
<email>zhangsan@ipipp.com</email>
</user>
<user id="2">
<name>李四</name>
<age>28</age>
<email>lisi@ipipp.com</email>
</user>
</users>DOM解析XML的核心步骤
使用DOM解析XML文件的核心流程可以分为以下几步:
- 创建DocumentBuilderFactory实例,用于生成解析器工厂
- 通过工厂创建DocumentBuilder实例,用于解析XML文件
- 调用DocumentBuilder的parse方法,将XML文件解析为Document对象
- 通过Document对象获取根节点,再逐层遍历子节点获取需要的内容
- 处理完成后关闭相关资源
完整Java解析代码示例
下面是完整的Java代码实现,代码中包含了详细的注释说明每一步的作用:
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
public class XmlParseDemo {
public static void main(String[] args) {
// 定义要解析的XML文件路径,这里替换为实际文件存放路径
String xmlFilePath = "D:/test/user_info.xml";
try {
// 1. 创建DocumentBuilderFactory实例
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 2. 通过工厂创建DocumentBuilder实例
DocumentBuilder builder = factory.newDocumentBuilder();
// 3. 解析XML文件,得到Document对象
Document document = builder.parse(new File(xmlFilePath));
// 4. 获取根节点,这里根节点是users
Element rootElement = document.getDocumentElement();
System.out.println("根节点名称:" + rootElement.getNodeName());
// 5. 获取所有user子节点
NodeList userNodeList = rootElement.getElementsByTagName("user");
// 遍历所有user节点
for (int i = 0; i < userNodeList.getLength(); i++) {
Node userNode = userNodeList.item(i);
// 判断节点是否为元素节点
if (userNode.getNodeType() == Node.ELEMENT_NODE) {
Element userElement = (Element) userNode;
// 获取user节点的id属性
String userId = userElement.getAttribute("id");
System.out.println("\n用户ID:" + userId);
// 获取name子节点内容
String userName = userElement.getElementsByTagName("name").item(0).getTextContent();
System.out.println("用户名:" + userName);
// 获取age子节点内容
String userAge = userElement.getElementsByTagName("age").item(0).getTextContent();
System.out.println("用户年龄:" + userAge);
// 获取email子节点内容
String userEmail = userElement.getElementsByTagName("email").item(0).getTextContent();
System.out.println("用户邮箱:" + userEmail);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}代码说明与运行结果
上述代码首先通过DocumentBuilderFactory和DocumentBuilder完成XML文件的解析,得到Document对象后,先获取根节点users,再通过getElementsByTagName方法获取所有user节点,遍历每个user节点时,先获取其id属性,再分别获取name、age、email子节点的文本内容并输出。
如果XML文件路径正确,运行上述代码后会输出如下结果:
根节点名称:users 用户ID:1 用户名:张三 用户年龄:25 用户邮箱:zhangsan@ipipp.com 用户ID:2 用户名:李四 用户年龄:28 用户邮箱:lisi@ipipp.com
注意事项
在使用DOM解析XML时需要注意两点:一是DOM解析会将整个XML文件加载到内存中,所以如果XML文件过大,可能会导致内存占用过高,这种情况可以选择SAX解析或者StAX解析;二是如果XML文件中包含特殊字符,需要确保文件的编码格式和声明的encoding一致,否则可能出现解析乱码问题。另外如果需要解析网络上的XML文件,只需要将parse方法的参数替换为对应的URL地址即可,比如builder.parse("http://127.0.0.1:8080/user_info.xml")。
Java解析XMLDOM解析XML文件读取Node操作DocumentBuilder 本作品最后修改时间:2026-05-22 21:43:02