其实这个东西很简单,甚至没有用到工厂,也没有用接口,4个文件搞定。<br>一个XML工具类,一个系统工具类,一个结点对象,一个BUILDER,如此而已,我就不信这个小东西对于经常读取XML配置文件的人来说不能提供方便?<br>大家有心情试试看,提供源码和DEMO!<br>目前是1.0版本,本人将不定期更新!<br>参考了XPATH方式,可以直接用路径的方式读取文件结点内容,如下:<br>public static void main(String[] args){ <br> ConfigBuilder cb = new ConfigBuilder("config/db-config.xml"); <br> <br> /** <br> * 这个是 getValueByPath(path) 的注释 <br> * <br> * 自定义路径 <br> * 例子: <br> * ROOT.NODE.CNODE@att1 末结点路径下的属性值 返回 String <br> * <br> * ROOT.NODE.CNODE:$children 末结点的所有孩子列表 返回 List<ConfigNode> <br> * ROOT.NODE.CNODE:$value 末结点的TEXT值 返回 String <br> * ROOT.NODE.CNODE:$node 末结点的结点 返回 ConfigNode <br> * ROOT.NODE.CNODE:$properties 末结点的属性表(MAP) 返回 Map<String,String> <br> * <br> * 每个结点在均支持[]括号内的条件: <br> * ROOT.NODE[name=bb].CNODE[name=ccc]@att1 安条件获取属性值 返回 String <br> * <br> * @author tangkf <br> * @param path <br> * @return <br> */ <br> <br> try { <br> cb.initinalize(); <br> <br> System.out.println(cb.getRoot()); <br> <br> //--获取 ccc 结点自己 <br> ConfigNode obj1 = (ConfigNode)cb.getRoot().getValueByPath("servers.dbserver.ccc:$node"); <br> <br> //--获取ccc 结点的 text 值 <br> String obj2 = cb.getRoot().getValueByPath("servers.dbserver.ccc:$value").toString(); <br> <br> //--获取ccc 结点的 attributes 值 <br> Map obj3 = (Map)cb.getRoot().getValueByPath("servers.dbserver.ccc:$properties"); <br> <br> //--获取dbserver 结点的 孩子结点表 List<ConfigNode> <br> List obj4 = (List)cb.getRoot().getValueByPath("servers.dbserver:$children"); <br> <br> //--获取结点 property[name=isdefault] 中name 的值, <br> //--当存在多个 property 结点时 取 其属性中 name=isdefault 的结点,当然这个返回值如果存在哪么就是 isdefault <br> String obj5 = cb.getRoot().getValueByPath("servers.dbserver.property[name=isdefault]:name").toString(); <br> <br> System.out.println(obj1+"\r\n"+obj2+"\r\n"+obj3+"\r\n"+obj4+"\r\n"+obj5); <br> <br> } catch (Exception e) { <br> e.printStackTrace(); <br> } <br>}
- 1
- 粉丝: 0
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助