common-configuration读取xml,properties文件
XMl: <?xmlversion="1.0"encoding="UTF-8"?> <Students> <boy>tom</boy> <studentid="1"> <namego="common1">lily</name> <age>20</age> </student> <studentid="2"> <namego="common2">lucy</name> <age>30</age> </student> <title>abc,cbc,bbc,bbs</title> <ballsize="20">pingpang</ball> </Students> Java代码: publicstaticvoid testReadXML() { try { XMLConfiguration config = new XMLConfiguration("config.xml"); // 对于单独元素的话,可以直接通过标签名获取值 String str = config.getString("boy"); System.out.println(str); // 对于循环出现的嵌套元素,可以通过父元素.子元素来获取集合值 List<Object> names = config.getList("student.name"); System.out.println(Arrays.toString(names.toArray())); // 对于一个单独元素包含的值有多个的话如:a,b,c,d可以通过获取集合 List<Object> 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); } catch (Exception e) { e.printStackTrace(); } } publicstaticvoid main(String[] args){ Xmlconfig.testReadXML(); } Properties: ip=127.0.0.1 port=8080 sd=111 application.name = KillerApp 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 Java代码: publicstaticvoidtestReadProperties() { // 注意路径默认指向的是classpath的根目录 Configurationconfig; 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,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, * uk,hk] [cn,hk] */ } catch(ConfigurationException e) { e.printStackTrace(); } } publicstaticvoid main(String[] args){ PropertiesConfig.testReadProperties(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |