设为首页 收藏本站
查看: 970|回复: 0

[经验分享] Apache Common-Configuration的使用,重点介绍对XML和Properties的读取操作

[复制链接]

尚未签到

发表于 2017-1-14 10:35:03 | 显示全部楼层 |阅读模式
  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
  
DSC0000.png
 
  关于对XML的操作代码

public static void testReadXML(){
try {
XMLConfigurationconfig = 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
     

<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的操作代码

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

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文件都很方便了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-328254-1-1.html 上篇帖子: 靓号正则表达式(前后向查找等) 和 apache正则包使用 下篇帖子: 百度、新浪、Mixi、Apache社区赞助的开源key-value分布式存储系统[转载]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表