您的位置:首页 > 其它

使用Dom4j解析XML文档

2014-12-04 09:04 363 查看
最近将项目中需要将一些配置信息写入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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: