xml文件内容

在src/main/resources下面添加《operator-config.xml》文件,文件内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<operator-config group="business"><operator-table code="tb_20200401"><name>测试0401</name></operator-table><operator-table code="tb_20200509"><name>测试0509</name></operator-table>
</operator-config>

添加实体类

解析xml文件,需要根据xml的内容创建实体类,用于存放读取到的xml文件的内容

添加OperatorTable实体类

用于存储<operator-table>对应的数据,代码如下:

import java.io.Serializable;import javax.xml.bind.annotation.XmlAttribute;public class OperatorTable implements Serializable {/****/private static final long serialVersionUID = -3462638489558342948L;private String code;private String name;@XmlAttributepublic String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

添加OperatorConfig实体类

用于存放<operator-config>对应的数据,代码如下:

import java.util.ArrayList;
import java.util.List;import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;import org.apache.commons.lang3.StringUtils;@XmlRootElement(name = "operator-config")
public class OperatorConfig {private String group;private List<OperatorTable> operatorTableList = new ArrayList<OperatorTable>();public boolean containsOperatorTable(String tableCode) {if (StringUtils.isEmpty(tableCode)) {return false;}for (int i = 0; i < operatorTableList.size(); i++) {OperatorTable operatorTable = operatorTableList.get(i);if (tableCode.equalsIgnoreCase(operatorTable.getCode())) {return true;}}return false;}@XmlAttributepublic String getGroup() {return group;}public void setGroup(String group) {this.group = group;}@XmlElement(name="operator-table")public List<OperatorTable> getOperatorTableList() {return operatorTableList;}public void setOperatorTableList(List<OperatorTable> operatorTableList) {this.operatorTableList = operatorTableList;}}

注解说明

@XmlRootElement(name = “operator-config”):根节点说明,必须要有,否则读取不到数据
@XmlAttribute:标识出该变量对应的是xml中的属性
@XmlElement(name=“operator-table”):标识出该变量对应的子节点

读取XML文件类

用于读取xml文件,代码如下:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class OperatorConfigManager {/*** Logger*/private final Logger log = LoggerFactory.getLogger(OperatorConfigManager.class);/*** 加载的OperatorConfig*/private OperatorConfig operatorConfig = null;/*** 内部单例实例*/private static OperatorConfigManager instance = new OperatorConfigManager();/*** 取得OperatorConfig加载器实例。** @return OperatorConfig加载器实例*/public static OperatorConfigManager getInstance() {return instance;}/*** 构造方法。*/private OperatorConfigManager() {if (this.operatorConfig == null) {this.operatorConfig = loadOperatorConfig();}}/*** GETTER(operatorConfig)** @return operatorConfig*/public OperatorConfig getOperatorConfig() {return operatorConfig;}/*** 从OperatorConfig定义文件中加载OperatorConfig。** @param defineInput 定义文件输入流* @return OperatorConfig*/public OperatorConfig reloadOperatorConfig(InputStream defineInput) {JAXBContext jc;OperatorConfig operatorConfig = null;try {jc = JAXBContext.newInstance(OperatorConfig.class);Unmarshaller u = jc.createUnmarshaller();operatorConfig = (OperatorConfig) u.unmarshal(defineInput);} catch (JAXBException e) {log.error("加载配置文件operator-config.xml出错", e);}return operatorConfig;}/*** 从默认的OperatorConfig定义文件(classpath://operator-config.xml)中加载OperatorConfig。** @return OperatorConfig*/@SuppressWarnings("resource")private OperatorConfig loadOperatorConfig() {InputStream is = null;try {String outpath = System.getProperty("user.dir") + File.separator;// 先读取外部目录的,没有再加载classpath的is = new FileInputStream(new File(outpath + "operator-config.xml"));} catch (IOException e) {System.out.println(e.getMessage());is = OperatorConfigManager.class.getClassLoader().getResourceAsStream("operator-config.xml"); // 默认加载classpath的}if (is != null) {return reloadOperatorConfig(is);} else {return null;}}
}

loadOperatorConfig()方法中,会优先读取编译成jar包后外面的xml文件,读取不到,会读取打在jar包里面的xml文件

springboot读取xml配置文件相关推荐

  1. Flex读取XML配置文件

    在Flex中我们经常使用xml文件,因为Flex支持强大的E4X功能,读取xml相当简洁.总结一下常用的Flex读取XML配置文件的方法: 1.使用Model标签形式 首先声明Model标签, < ...

  2. Spring读取xml配置文件的原理与实现

    2019独角兽企业重金招聘Python工程师标准>>> Spring读取xml配置文件的原理与实现 本篇博文的目录: 一:前言 二:spring的配置文件 三:依赖的第三方库.使用技 ...

  3. java 读取 xml 配置文件内容

    java  读取 xml 配置文件内容 public static void main(String[] args) throws Exception {//创建读取的核心类SAXReader sax ...

  4. SpringBoot读取外部配置文件的方法

    1.SpringBoot配置文件 SpringBoot使用一个以application命名的配置文件作为默认的全局配置文件.支持properties后缀结尾的配置文件或者以yml/yaml后缀结尾的Y ...

  5. Winform中实现读取xml配置文件并动态配置DevExpress的RadioGroup的选项

    场景 Winform中对DevExpress的RadioGroup进行数据源绑定,即通过代码添加选项: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/articl ...

  6. Unity3d读取XML配置文件

    为什么80%的码农都做不了架构师?>>>    读取配置文件的代码如下 string path = Application.dataPath + @"/Resources/ ...

  7. springboot——pom.xml 配置文件的设置

    软件152 蒲双 一.springboot简述概念 从最根本上来讲,Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用.简便起见,该框架也提供了命令行界面,它可以用来运行和测试B ...

  8. SpringBoot读取properties配置文件中的数据

    常用三种方法: 1.@Value注解读取 2.使用Environment读取 3.使用@ConfigurationProperties注解读取 代码: 链接:https://pan.baidu.com ...

  9. Springboot读取.properties配置文件并取值

    一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件. 它提供了几个主要的方法: 1. ge ...

最新文章

  1. 孪生网络Dataset
  2. LR中Action,Transaction,Rendezvous,SubmitData的插入顺序请注意
  3. css设置table阴影浮动效果
  4. Excel如何将数据上下调换位置
  5. 什么软件可以清除流氓软件
  6. 版本控制工具SVN的使用
  7. c语言gcd 简易函数,简单[GCD]用法详细总结(上)
  8. face_recognition移植至树莓派
  9. 凝思操作系统:U盘无法识别和读取问题
  10. android 版本号 7.0 O,微信全面上线64位7.0.9版本:运行速度更快,你更新了吗?(附下载)...
  11. 中国计算机学会会刊变动公告
  12. BUUCTF-WEB 【0CTF 2016】piapiapia 1
  13. 计算机恢复原始桌面图标,如何将电脑界面上的图标恢复到原始样子?
  14. Unity3d中渲染到RenderTexture的原理,几种方式以及一些问题
  15. 我们如何建立Schrödinger的div? 与Vue!
  16. ROS Couldn‘t find executable named xxx.py问题
  17. 建立您的启动:运行多个域
  18. 怎么在linux上添加网络打印机,Ubuntu下安装安装hp网络打印机图解
  19. mysql scaffold_dotnet core 3.0.0-preview8 EF DB First mysql和oracle用Scaffold 报错
  20. Android 精彩博客导航帖

热门文章

  1. phpwind安装空白问题解决
  2. 一道搜狗机试题的解答
  3. RSAT(Regulatory Sequence Analysis Tools)详解
  4. SAP FAGLGVTR 总账科目年末结转
  5. 代码翻译尝试-使用Roaster解析和生成Java源码
  6. 【高并发】解密导致并发问题的第三个幕后黑手——有序性问题
  7. 计算机一个小键盘按不出来怎么办,我的电脑键盘上面1234按不出来怎么办
  8. iOS 全息备份研究
  9. 20220408-CH9121串口转以太网模块学习
  10. 短视频直播系统的功能