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。
Spring如何读取xml配置文件的的更多相关文章
- 【XML配置文件读取】使用jdom读取XML配置文件信息
在项目中我们经常需要将配置信息写在配置文件中,而XML配置文件是常用的格式. 下面将介绍如何通过jdom来读取xml配置文件信息. 配置文件信息 <?xml version="1.0& ...
- 模拟Spring中applicationContext.xml配置文件初始化bean的过程
package com.xiaohao.action; import java.io.File; import java.lang.reflect.Method; import java.util.C ...
- ssh整合思想初步 struts2与Spring的整合 struts2-spring-plugin-2.3.4.1.jar下载地址 自动加载Spring中的XML配置文件 Struts2下载地址
首先需要JAR包 Spring整合Structs2的JAR包 struts2-spring-plugin-2.3.4.1.jar 下载地址 链接: https://pan.baidu.com/s/1o ...
- spring读取xml配置文件(二)
一.当spring解析完配置文件名的占位符后,就开始refresh容器 @Override public void refresh() throws BeansException, IllegalSt ...
- java代码和spring框架读取xml和properties文件
1.java文件读取properties文件 Properties props = new Properties(); try { //资源文件存放在类文件的根目录下.即是放在src下面.则不需要写路 ...
- [drp 3]读取Xml配置文件,连接数据库
导读:之前看一本XML的书,里面说到了对于XML的操作问题,但由于各方面的原因,一直没有总结.这次借着做项目,就总结总结对于XML文件的利用.主要是从配置数据库连接和保存数据这两方面来的.这篇博客介绍 ...
- DOM4J 读取XML配置文件进行数据库连接
介绍介绍DOM4J. 据说是非常优秀非常优秀的Java XML API(Dom4j is an easy to use, open source library for working ...
- Eclipse 中 Spring 项目的 XML 配置文件报错 Referenced file contains errors
原来运行正常的项目,突然在applicationContext.xml 文件头报错 总结一下网上的解决方案: 1.有可能网络状况不好导致 如果使用Maven构建项目,spring在加载xsd文件时总是 ...
- Winform中实现读取xml配置文件并动态配置ZedGraph的RadioGroup的选项
场景 Winform中对ZedGraph的RadioGroup进行数据源绑定,即通过代码添加选项: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...
随机推荐
- 51nod 1228 序列求和(伯努利数)
1228 序列求和 题目来源: HackerRank 基准时间限制:3 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 收藏 关注 T(n) = n^k,S(n) = T(1 ...
- Codeforces Round #345 (Div. 2) E. Table Compression 并查集+智商题
E. Table Compression time limit per test 4 seconds memory limit per test 256 megabytes input standar ...
- ant design Radio.Group defaultValue 默认选中没生效
版本问题 (3.10.7 版本中使用 defaultValue) <div> <Radio.Group defaultValue="a" buttonStyle= ...
- sqli-lab(14)
POST型的 双注入 0X01随便测试一下 在password输入"会报错 "#就不报错了 那么应该是“”的闭合 但是没有回显的值 只有报错的信息 那我们是不是该考虑从报错的语句 ...
- sqli-labs(11)
基于登录点的注入(小编这里傻逼了 可以直接用group_concat函数绕过显示问题我还在用limit绕过) 0X01这里我们的参数就不是在get的方法里面提交的了 我们遇到了全新的问题 那么该怎么 ...
- substring()方法是如何工作
1.substring()方法做了什么? substring(beginIndex,endIndex)方法返回一个从beginIndex到endIndex-1的字符串 String x = " ...
- 一款基于jQuery Ajax的等待效果
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- sh脚本获取当前目录
#!/bin/bashcurDir=$(pwd)echo "cur dir is:$curDir"
- SQL语句多个字段排序
写在前面的话: 本次迭代,分配的任务有点多啊,好在本妈妈朝10晚6的加班加点.其中一项就是列表展示啊, 展示就展示呗,还要排序.排序也可以,测试时排序字段值为啥都一样啊.结果点一下一个顺序. 就想在第 ...
- Nginx常见配置说明
#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | ...