最近将项目中需要将一些配置信息写入XML文件中,程序运行时从XML文档中读取需要的信息,对于读取XML文档中的信息,决定使用DOM4J来解析XML。
在XML中一开始只是存储ip和port的信息。格式如下:
<root> <server> <ip>172.16.111.86</ip> <port>9999</port> </server> </root>一开始时候读取出来的信息是ip:port类型的字符串最为返回值,如果需要单独的ip或者port时在根据“:”使用字符串分割。
但是后来因为业务需求对XML中额外加入几个属性,在需要时将他读取出来,改动后的XML格式如下:
<root> <server> <name>测试环境</name> <ip>172.16.111.86</ip> <port>9999</port> <bind>check,check1</bind> </server> </root>这时在采用以前读取方式是不行的,最终决定使用Map对象来存储标签和值的映射关系,最终返回一个Map对象,需要某一值时,从Map对象中使用get方法即可获得。具体方法如下:
/** * 读取指定的XML文件,并返回相应的值 * XML解析使用DOM4J * @author Administrator */ public class XMLRead{ /** * 将需要读取xml文档中的标签名和值存放到Map中并返回 * @param file 需要读取的xml文件 * @return 存储结果 */ @SuppressWarnings("unchecked") public static Map<String, String> readFile(File file,String node){ Map<String, String> result = new HashMap<String, String>(); try { //创建SAXReader对象 SAXReader reader = new SAXReader(); //使用SAXReader对象的read方法创建Document对象。 Document doc = reader.read(file); //获取根元素对象 Element root = doc.getRootElement(); //获取指定节点 Element relm = root.element(node); //所有节点的名称 List<Element> elms = relm.elements(); Iterator<Element> iterator = elms.iterator(); while(iterator.hasNext()){ Element elm = iterator.next(); result.put(elm.getName(), elm.getText()); } } catch (DocumentException e) { e.printStackTrace(); } return result; } }
原文地址:http://blog.csdn.net/u011740475/article/details/41719443