Apache Common-Configuration的使用,重点介绍对XML和Properties的读取操作

转:http://javacrazyer.iteye.com/blog/771196

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代码 复制代码  收藏代码
  1. <SPAN style="FONT-SIZE: medium">    public static void testReadXML(){   
  2.         try {   
  3.                
  4.             XMLConfiguration    config = new XMLConfiguration("config.xml");   
  5.             //对于单独元素的话,可以直接通过标签名获取值   
  6.             String str=config.getString("boy");   
  7.             System.out.println(str);   
  8.             //对于循环出现的嵌套元素,可以通过父元素.子元素来获取集合值   
  9.             List<String> names=config.getList("student.name");   
  10.             System.out.println(Arrays.toString(names.toArray()));   
  11.             //对于一个单独元素包含的值有多个的话如:a,b,c,d 可以通过获取集合   
  12.             List<String> titles=config.getList("title");   
  13.             System.out.println(Arrays.toString(titles.toArray()));   
  14.             //对于标签元素的属性,可以通过 标签名[@属性名] 这样的方式获取   
  15.             String size=config.getString("ball[@size]");   
  16.             System.out.println(size);   
  17.             //对于嵌套的标签的话,想获得某一项的话可以通过 标签名(索引名) 这样方式获取   
  18.             String id=config.getString("student(1)[@id]");   
  19.             System.out.println(id);   
  20.                
  21.             String go=config.getString("student.name(0)[@go]");   
  22.             System.out.println(go);   
  23.             /**  
  24.              * 依次输出结果为  
  25.              * tom  
  26.              * [lily, lucy]  
  27.              * [abc, cbc, bbc, bbs]  
  28.              * 20  
  29.              * 2  
  30.              * common1  
  31.              *   
  32.              */  
  33.         } catch (ConfigurationException e) {   
  34.             e.printStackTrace();   
  35.         }   
  36.     }</SPAN>  
	public static void testReadXML(){
		try {
			
			XMLConfiguration	config = new XMLConfiguration("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();
		}
	}

   config.xml

   

Xml代码 复制代码  收藏代码
  1. <SPAN style="FONT-SIZE: medium"><Students>  
  2. <boy>tom</boy>  
  3. <student id="1">  
  4. <name go="common1">lily</name>  
  5. <age>20</age>  
  6. </student>  
  7. <student id="2">  
  8. <name go="common2">lucy</name>  
  9. <age>30</age>  
  10. </student>  
  11. <title>abc,cbc,bbc,bbs</title>  
  12. <ball size="20">pingpang</ball>  
  13. </Students></SPAN>  
<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>

 

 

关于Properties的操作代码

Java代码 复制代码  收藏代码
  1. <SPAN style="FONT-SIZE: medium">public static void testReadProperties(){   
  2.         //注意路径默认指向的是classpath的根目录      
  3.         Configuration config;   
  4.         try {   
  5.             config = new PropertiesConfiguration("config.properties");   
  6.             String ip=config.getString("ip");      
  7.             int port=config.getInt("port");      
  8.             String title=config.getString("application.title");      
  9.             System.out.println(ip+"\n"+port+"\n"+title);      
  10.             //再举个Configuration的比较实用的方法吧,在读取配置文件的时候有可能这个键值对应的值为空,那么在下面这个方法中      
  11.             //你就可以为它设置默认值。比如下面这个例子就会在config.properties这个文件中找id的值,如果文件中没有配置id,就会给id设置值为123      
  12.             //这样就保证了java的包装类不会返回空值。虽然功能很简单,但是很方便很实用。      
  13.             String id=config.getString("id""defaultid");    
  14.             System.out.println(id);   
  15.                
  16.             //如果在properties 文件中有如下属性keys=cn,com,org,uk,edu,jp,hk,这样的类似一个值含有多个元素值      
  17.             //那么下面两种方法都可以   
  18.             String[] keys1=config.getStringArray("keys");    
  19.             System.out.println(Arrays.toString(keys1));   
  20.             List keys2=config.getList("keys");     
  21.             System.out.println(Arrays.toString(keys2.toArray()));   
  22.             //接下来这两步加上的原因是,默认分割符号是逗号,而在配置文件中con的值中含有多个短横线分隔符,所以要重新设置分隔符读出来喽   
  23.             AbstractConfiguration.setDefaultListDelimiter('-');   
  24.             config = new PropertiesConfiguration("config.properties");   
  25.             List cons=config.getList("con");     
  26.             System.out.println(Arrays.toString(cons.toArray()));   
  27.             /**  
  28.              *   
  29.              *  依次输出结果如下  
  30.              *  127.0.0.1  
  31.              *  8080  
  32.              *  Killer App 1.6.2  
  33.              *  defaultid  
  34.              *  [cn, com, org, uk, edu, jp, hk]  
  35.              *  [cn, com, org, uk, edu, jp, hk]  
  36.              *  [cn, com, org, uk, edu, jp, hk]  
  37.              */  
  38.         } catch (ConfigurationException e) {   
  39.             e.printStackTrace();   
  40.         }      
  41.            
  42.     }</SPAN>  
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();
		}   
		
	}

 config.properties

Java代码 复制代码  收藏代码
  1. <SPAN style="FONT-SIZE: medium">ip=127.0.0.1     
  2. port=8080     
  3. sd=111  
  4. application.name = Killer App      
  5. application.version = 1.6.2     
  6. application.title = ${application.name} ${application.version}      
  7. keys=cn,com,org,uk,edu,jp,hk   
  8. con=cn-com-org-uk-edu-jp-hk  </SPAN>  
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  

 有了这样的工具类,以后操作XML和properties文件都很方便了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值