关于用java读取xml中节点的值
在写个工程,用到了如下配置的XML文档,时间紧没法网上资料太多一时看了头大,实在不知道怎么解析了,各位大神麻烦指教一下。
配置文档内容如下
hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
com.mysql.jdbc.Driver
jdbc:mysql://localhost/db?characterEncoding=gb2312
root
root
com.mysql.jdbc.Driver
jdbc:mysql://localhost/db?characterEncoding=gb2312
root
root
需要把上面的信息读取出来放map里。
比如键aaa.driver_class值com.mysql.jdbc.Driver
------解决思路----------------------
package hello.ant;
import java.io.InputStream;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class SaxXml {
public static void main(String[] args) throws Exception {
Map map=new LinkedHashMap();
InputStream is = SaxXml.class.getResourceAsStream("/hibernate.xml");
Document doc = new SAXReader().read(is);
Element root_node = doc.getRootElement();
//System.out.println(root_node.getName());
List child_node_list = root_node.elements();
for (Element child_node : child_node_list) {
//System.out.println(child_node.getName());
String key=child_node.attributeValue("name");
String value=child_node.getText();
map.put(key, value);
List child_node_child = child_node.elements();
for(Element child_node_child_list : child_node_child){
//System.out.println(child_node_child_list.getName());
String key1=child_node_child_list.attributeValue("name");
String value1=child_node_child_list.getText();
map.put(key1, value1);
}
}
for(Map.Entry entry:map.entrySet()){
System.out.println(entry.getKey()+"==="+entry.getValue());
}
//System.out.println(map.size());
}
}