我是靠谱客的博主 耍酷手机,最近开发中收集的这篇文章主要介绍Spring如何读取xml配置文件的,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我们通过一个小案例来看xml解析过程。

1. 导包

    <dependencies>
        <!-- xml解析工具 -->
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>
        <!-- 常用工具包 -->
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
    </dependencies>

2. xml文件

<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user1 id="001">
        <id>01</id>
        <name>周杰伦</name>
        <age>23</age>
        <job>歌手</job>
    </user1>
    <user2 id="002">
        <id>02</id>
        <name>胡歌</name>
        <age>24</age>
        <job>演员</job>
    </user2>
</users>  

 3. 测试代码

import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.xml.sax.SAXException;
/**
 * spring读取xml配置的过程
 */
public class Test {
    
    public static void main(String[] args) throws SAXException, DocumentException {
        Test t = new Test();
        SAXReader saxReader = new SAXReader();
        // 读取文件
        Document read = saxReader.read(t.getClassPath("user.xml"));
        // 获取根节点
        Element rootElement = read.getRootElement();
        t.getNodes(rootElement);
    }
    // 1. 通过文件名获取输入流
    public InputStream getClassPath(String xmlPath) {
        InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream(xmlPath);
        return resourceAsStream;
    }
    // 2. 获取节点信息
    public static void getNodes(Element rootElement) {
        System.out.println("获取当前名称:" + rootElement.getName());
        // 获取属性信息
        List<Attribute> attributes = rootElement.attributes();
        for (Attribute attribute : attributes) {
            System.out.println("属性:" + attribute.getName() + " : " + attribute.getText());
        }
        // 获取属性value
        String value = rootElement.getTextTrim();
        if (!StringUtils.isEmpty(value)) {
            System.out.println("value:" + value);
        }
        // 使用迭代器遍历,继续遍历子节点
        Iterator<Element> elementIterator = rootElement.elementIterator();
        while (elementIterator.hasNext()) {
            Element next = elementIterator.next();
            getNodes(next);
        }
    }
}

======================
【控制台输出】
获取当前名称:users
获取当前名称:user1
属性:id : 001
获取当前名称:id
value:01
获取当前名称:name
value:周杰伦
获取当前名称:age
value:23
获取当前名称:job
value:歌手
获取当前名称:user2
属性:id : 002
获取当前名称:id
value:02
获取当前名称:name
value:胡歌
获取当前名称:age
value:24
获取当前名称:job
value:演员

spring解析xml配置文件过程:

Dom4j与Sax区别
  dom4j不适合大文件的解析,因为它是一下子将文件加载到内存中,所以有可能出现内存溢出,sax是基于事件来对xml进行解析的,所以他可以解析大文件的xml,也正是因为如此,所以dom4j可以对xml进行灵活的增删改查和导航,而sax没有这么强的灵活性,所以sax经常是用来解析大型xml文件,而要对xml文件进行一些灵活(crud)操作就用dom4j。

转载于:https://www.cnblogs.com/wlwl/p/10109310.html

最后

以上就是耍酷手机为你收集整理的Spring如何读取xml配置文件的的全部内容,希望文章能够帮你解决Spring如何读取xml配置文件的所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部