您的位置:首页 > 运维架构

使用XMLConfiguration解析xml,properties等相应信息

2017-08-23 18:31 393 查看
org.apache.commons.configuration.XMLConfiguration;

Apache Common-Configuration工具可以从
Properties文件,XML文件,JNDI,JDBC数据源,System Properties,Applet parameters,Servlet Parameters等读取相应信息

使用步骤

前提,引入commons-configuration-1.6.jar这个JAR包,同时还必须映入commm-logging.jar,common-lang.jar和common-collection.jar



关于对XML的操作代码

Java代码


<span style="font-size: medium;"> public static void testReadXML(){

try {

XMLConfiguration config = new XMLConfiguration("config.xml");

// XMLConfiguration config = new XMLConfiguration();

//config.load("config.xml")

//对于单独元素的话,可以直接通过标签名获取值

String str=config.getString("boy");

System.out.println(str);

//对于循环出现的嵌套元素,可以通过父元素.子元素来获取集合值

List<String> names=config.getList("student.name");

System.out.println(Arrays.toString(names.toArray()));

//对于一个单独元素包含的值有多个的话如:a,b,c,d 可以通过获取集合

List<String> titles=config.getList("title");

System.out.println(Arrays.toString(titles.toArray()));

//对于标签元素的属性,可以通过 标签名[@属性名] 这样的方式获取

String size=config.getString("ball[@size]");

System.out.println(size);

//对于嵌套的标签的话,想获得某一项的话可以通过 标签名(索引名) 这样方式获取

String id=config.getString("student(1)[@id]");

System.out.println(id);

String go=config.getString("student.name(0)[@go]");

System.out.println(go);

/**

* 依次输出结果为

* tom

* [lily, lucy]

* [abc, cbc, bbc, bbs]

* 20

* 2

* common1

*

*/

} catch (ConfigurationException e) {

e.printStackTrace();

}

}</span>

config.xml

Xml代码


<span style="font-size: medium;"><Students>

<boy>tom</boy>

<student id="1">

<name go="common1">lily</name>

<age>20</age>

</student>

<student id="2">

<name go="common2">lucy</name>

<age>30</age>

</student>

<title>abc,cbc,bbc,bbs</title>

<ball size="20">pingpang</ball>

</Students></span>

关于Properties的操作代码

Java代码


<span style="font-size: medium;">public static void testReadProperties(){

//注意路径默认指向的是classpath的根目录

Configuration config;

try {

config = new PropertiesConfiguration("config.properties");

String ip=config.getString("ip");

int port=config.getInt("port");

String title=config.getString("application.title");

System.out.println(ip+"\n"+port+"\n"+title);

//再举个Configuration的比较实用的方法吧,在读取配置文件的时候有可能这个键值对应的值为空,那么在下面这个方法中

//你就可以为它设置默认值。比如下面这个例子就会在config.properties这个文件中找id的值,如果文件中没有配置id,就会给id设置值为123

//这样就保证了java的包装类不会返回空值。虽然功能很简单,但是很方便很实用。

String id=config.getString("id", "defaultid");

System.out.println(id);

//如果在properties 文件中有如下属性keys=cn,com,org,uk,edu,jp,hk,这样的类似一个值含有多个元素值

//那么下面两种方法都可以

String[] keys1=config.getStringArray("keys");

System.out.println(Arrays.toString(keys1));

List keys2=config.getList("keys");

System.out.println(Arrays.toString(keys2.toArray()));

//接下来这两步加上的原因是,默认分割符号是逗号,而在配置文件中con的值中含有多个短横线分隔符,所以要重新设置分隔符读出来喽

AbstractConfiguration.setDefaultListDelimiter('-');

config = new PropertiesConfiguration("config.properties");

List cons=config.getList("con");

System.out.println(Arrays.toString(cons.toArray()));

/**

*

* 依次输出结果如下

* 127.0.0.1

* 8080

* Killer App 1.6.2

* defaultid

* [cn, com, org, uk, edu, jp, hk]

* [cn, com, org, uk, edu, jp, hk]

* [cn, com, org, uk, edu, jp, hk]

*/

} catch (ConfigurationException e) {

e.printStackTrace();

}

}</span>

config.properties

Java代码


<span style="font-size: medium;">ip=127.0.0.1

port=8080

sd=111

application.name = Killer App

application.version = 1.6.2

application.title = ${application.name} ${application.version}

keys=cn,com,org,uk,edu,jp,hk

con=cn-com-org-uk-edu-jp-hk </span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐