浏览 2450 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-23
假如有个XML,名叫:XMLtest.xml如下: <?xml version="1.0" encoding="ISO-8859-1" ?> <gui-definition> <colors> <background>#808080</background> <text>#000000</text> <header>#008000</header> <link normal="#000080" visited="#800080"/> <default>${colors.header}</default> </colors> <rowsPerPage>15</rowsPerPage> <buttons> <name>OK,Cancel,Help</name> <name>Yes,No,Cancel</name> </buttons> <numberFormat pattern="###\,###.##"/> </gui-definition> 标准的XML文件都会有一个跟标签包裹住所有内容,这个标签的子标签认为是顶级名字空间 (这个说法可能不准确)不多说了看代码吧 XMLConfiguration config = new XMLConfiguration("XMLtest.xml"); /** *<colors> * <background>#808080</background> * <text>#000000</text> * <header>#008000</header> * <link normal="#000080" visited="#800080"/> * <default>${colors.header}</default> *</colors> *这是从上面的xml中摘抄的一段,我们现在来解析它, *colors是根标签下的直接子标签,所以是顶级名字空间 */ String backColor = config.getString("colors.background"); String textColor = config.getString("colors.text"); //现在我们知道了如何读取标签下的数据,那么如何读标签中的属性呢?看下面 //<link normal="#000080" visited="#800080"/> String linkNormal = config.getString("colors.link[@normal]"); //还支持引用呢! //<default>${colors.header}</default> String defColor = config.getString("colors.default"); //也支持其他类型,但是一定要确定类型正确,否则要报异常哦 //<rowsPerPage>15</rowsPerPage> int rowsPerPage = config.getInt("rowsPerPage"); /** *但是我们如何读取List呢 *看这里: *<buttons> * <name>OK,Cancel,Help</name> * <name>Yes,No,Cancel</name> *</buttons> */ 这时我们可以用: List buttons = config.getList("buttons.name"); for(String button:buttons){ System.out.println(button); }但是显示的是 OK Cancel Help Yes No Cancel我们想要的是 OK,Cancel,Help Yes,No,Cancel如果看过之前的文章就会知道,我们有一些设置没有设 也就是我们要禁用List分隔符delimiter.在AbstractionConfiguration 这个类中(XMLConfiguration的父类)有这个setDelimiterParsingDisabled方法可以 禁用分隔符。但是要在读取XML文件之前设置这个属性。所以代码改为 XMLConfiguration config = new XMLConfiguration(); config.setDelimiterParsingDisabled(true); config.setFileName("XMLtest.xml"); config.load(); List<String> buttons = config.getList("buttons.name"); for(String button:buttons){ System.out.println(button); }这就可以了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |