Java XML文件解析

该博客主要介绍了如何在SpringBoot项目中读取并解析XML配置文件。代码示例展示了如何利用DocumentBuilderFactory和DocumentBuilder从Resource目录下的config.xml文件获取会话超时时间和服务调用日志开关等配置信息。
摘要由CSDN通过智能技术生成

xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<configs>
    <config>
        <key>session-expire-time</key>
        <remark>会话超时时间</remark>
        <type>input</type>
        <default>7200</default>
    </config>
    <config>
        <key>service-record-enable</key>
        <remark>服务调用日志</remark>
        <type>switch</type>
        <default>true</default>
    </config>
</configs>

代码实现

/**
    Spring Boot项目,配置文件位于Resource目录下
*/
public static void load() throws IOException {
    Document doc = null;
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = null;
    InputStream inputStream = null;
    try {
        // 从resource下获取配置文件
        ClassPathResource resource = new ClassPathResource("config.xml");
        // 获取输入流
        inputStream = resource.getInputStream();
        builder = dbf.newDocumentBuilder();
        // 解析输入流
        doc = builder.parse(inputStream);
        // getChildNodes获取子节点
        // 先获取<configs>,在获取<configs>的子节点,即<config>数组
        NodeList configs = doc.getChildNodes().item(0).getChildNodes();
        for (int i = 0; i < configs.getLength(); i++) {
            // 得到第i个config
            Node item = configs.item(i);
            // nodeName即标签的名称,这里为config,解析过程换行会出现#text等无效结点,所以要加判断
            if ("config".equals(item.getNodeName())) {
                // 获取config下的子节点,即<key>|<remark>|<type>|<default>
                NodeList items = item.getChildNodes();
                for (int k = 0; k < items.getLength(); k++) {
                    Node node = items.item(k);
                    if ("key".equals(node.getNodeName())) {
                        // 得到内容
                        System.out.println(node.getTextContent());
                    } else if ("remark".equals(node.getNodeName())) {
                        System.out.println(node.getTextContent());
                    } else if ("default".equals(node.getNodeName())) {
                        System.out.println(node.getTextContent());
                    } else if ("type".equals(node.getNodeName())) {
                        System.out.println(node.getTextContent());
                    }
                }
            }
        }
    } catch (Exception e) {
        throw new RuntimeException("读取配置文件信息失败");
    } finally {
        if (inputStream != null) {
            inputStream.close();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值