tinguo002的gravatar头像
tinguo002 2018-11-03 08:48:13
Commons-Configuration2 读取xml配置事例 - 比常规写法简便

比常规写法简便一些

配置文件

<?xml version="1.0" encoding="UTF-8"?>

<!-- 第一种逆向工程xml配置 -->
<configuration>

    <!-- 数据库链接URL、用户名、密码 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://localhost:3306/i_wenyiba_com?useUnicode=true&amp;characterEncoding=utf8"
        userId="root"
        password="">
    </jdbcConnection>

    <table tableName="u_user" domainObjectName="User" tempPath="E:\soft\ideaWork\yqj\mavenproject\mgr\generationCode\resources\generationCode\ftl">
        <property tempName="model.ftl" dec="实体类" targetPath="E:\soft\ideaWork\yqj\mavenproject\mgr\commonDao\src\main\java\yqj\mavenproject\commonDao\model"/>
        <property tempName="mapper.ftl" dec="mapper配置文件" targetPath="E:\soft\ideaWork\yqj\mavenproject\mgr\commonDao\src\main\resources\commonDao\mappers"/>
    </table>


</configuration>

测试类

package yqj.mavenproject.util;

import org.apache.commons.configuration2.XMLConfiguration;
import org.junit.Test;
import yqj.mavenproject.commonUtil.XmlReadUtil;

/**
 * Unit test for simple App.
 */
public class XmlReadUtilTest
{
    /**
     * Rigorous Test :-)
     */
    @Test
    public void testExecute()
    {
        XMLConfiguration config = XmlReadUtil.execute("E:\\generatorConfig.xml");
        System.out.println("******数据库连接信息******");
        System.out.println(config.getString("jdbcConnection[@driverClass]"));
        System.out.println(config.getString("jdbcConnection[@connectionURL]"));
        System.out.println(config.getString("jdbcConnection[@root]"));
        System.out.println(config.getString("jdbcConnection[@password]",""));

        System.out.println("******模板信息******");
        int tableLen = config.getMaxIndex("table")+1;
        for(int i=0;i<tableLen;i++){
            System.out.println("表名:"+config.getString("table("+i+")[@tableName]"));
            System.out.println("对象名:"+config.getString("table("+i+")[@domainObjectName]"));
            System.out.println("模板父目录:"+config.getString("table("+i+")[@tempPath]"));
            int propertyLen = config.getMaxIndex("table("+i+").property")+1;
            System.out.println("table有"+propertyLen+"个子节点");
            for(int j=0;j<propertyLen;j++){
                System.out.println(config.getString("table("+i+").property("+j+")[@tempName]"));
            }
        }
    }
}

工具类

package yqj.mavenproject.commonUtil;

import org.apache.commons.configuration2.XMLConfiguration;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.tree.DefaultExpressionEngine;
import org.apache.commons.configuration2.tree.DefaultExpressionEngineSymbols;
import org.apache.log4j.Logger;



/**
 * Created by Think on 2018/11/2.
 */
public class XmlReadUtil {
    private static final Logger logger = Logger.getLogger(XmlReadUtil.class);

    public static XMLConfiguration  execute(String xmlPath){
        XMLConfiguration config = null;
        try {
            Configurations configs = new Configurations();
            config = configs.xml(xmlPath);
            {
                // 使用默认的符号定义创建一个表达式引擎
                DefaultExpressionEngine engine = new DefaultExpressionEngine(
                        DefaultExpressionEngineSymbols.DEFAULT_SYMBOLS);
                // 指定表达式引擎
                config.setExpressionEngine(engine);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return config;
    }

}

 

pom.xml

<dependency>
  <groupId>commons-beanutils</groupId>
  <artifactId>commons-beanutils</artifactId>
  <version>1.9.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-configuration2 -->
<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-configuration2</artifactId>
  <version>2.4</version>
</dependency>

依赖包可能不全,根据提示再添加下。

依赖包下载地址:  https://mvnrepository.com/artifact/org.apache.commons/commons-configuration2/2.4

 


打赏
最近浏览
ypt520  LV7 2020年4月8日
阿呆阿呆阿呆阿呆  LV10 2020年3月5日
redsnower  LV5 2019年11月27日
deanhz  LV1 2019年4月30日
tinguo002  LV6 2018年12月14日
xinjl113 2018年12月13日
暂无贡献等级
yxr坏孩子  LV9 2018年11月8日
最代码官方  LV168 2018年11月3日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友