导读:本期聚焦于小伙伴创作的《如何用Java读取并解析XML文件?DOM解析实战教程》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何用Java读取并解析XML文件?DOM解析实战教程》有用,将其分享出去将是对创作者最好的鼓励。

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();
        }
    }
}

代码说明与运行结果

上述代码首先通过DocumentBuilderFactoryDocumentBuilder完成XML文件的解析,得到Document对象后,先获取根节点users,再通过getElementsByTagName方法获取所有user节点,遍历每个user节点时,先获取其id属性,再分别获取nameageemail子节点的文本内容并输出。

如果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

免责声明:网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。