public static void exe(){
Map classMap = new HashMap();
SAXReader reader = new SAXReader();
Document document = null;
File file = new File("f:/sql.xml");
try {
org.dom4j.Document doc = reader.read( file.toURL());
org.dom4j.Element root = doc.getRootElement();
List classElements = root.elements();
for(int i = 0 ; i < classElements.size() ;i ++){
org.dom4j.Element classElement = (org.dom4j.Element)classElements.get(i);
System.out.println(classElement.getName());
List funElements = classElement.elements();
Map funMap = new HashMap();
for(int j = 0 ; j < funElements.size() ; j ++){
org.dom4j.Element funElement = (org.dom4j.Element)funElements.get(j);
//sql节点
List sqlElements = funElement.elements();
Map sqlMap = new HashMap();
for(int k = 0 ; k < sqlElements.size() ; k ++){
org.dom4j.Element sqlElement = (org.dom4j.Element)sqlElements.get(k);
//sql节点的所有属性
Iterator sqlAttrItr = sqlElement.attributeIterator();
String sqlName = null;
while(sqlAttrItr.hasNext()){
org.dom4j.tree.DefaultAttribute att = (org.dom4j.tree.DefaultAttribute)sqlAttrItr.next();
System.out.println("属性名称 "+att.getName()+"===="+att.getValue());
if(att.getName().equals("name")){
sqlName = att.getText();
break;
}
}
if(sqlName == null){
throw new Exception("sql node missing 'name' attribute ! ");
}
sqlMap.put(sqlName, sqlElement.getText());
}
//方法节点属性
Iterator funAttrItr = funElement.attributeIterator();
String funName = null;
while(funAttrItr.hasNext()){
org.dom4j.tree.DefaultAttribute att = (org.dom4j.tree.DefaultAttribute)funAttrItr.next();
if(att.getName().equals("name")){
funName = att.getText();
break;
}
}
if(funName == null){
throw new Exception("function node missing 'name' attribute ! ");
}
//将方法名作为key值 HashMap作为value
funMap.put(funName, sqlMap);
}
//类节点的属性
Iterator classAttrItr = classElement.attributeIterator();
String className = null;
while(classAttrItr.hasNext()){
org.dom4j.tree.DefaultAttribute att = (org.dom4j.tree.DefaultAttribute)classAttrItr.next();
if(att.getName().equals("name")){
className = att.getText();
break;
}
}
if(className == null){
throw new Exception("class node missing 'name' attribute ! ");
}
//将类名作为key值 HashMap作为value
classMap.put(className, funMap);
}
System.out.println(classMap);
System.out.println("当前sql语句: "+((HashMap)((HashMap)classMap.get("SignalDAOJDBCImpl")).get("query")).get("query_user"));
}catch(Exception e){e.printStackTrace();}
}
xml文件
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<class name="SignalDAOJDBCImpl">
<function name = "add">
<sql name = "add_user">insert into user</sql>
<sql name = "add_dept">insert into dept </sql>
</function>
<function name = "update">
<sql name = "update_leveal">update user set leveal = 2 where level <![CDATA[ < ]]> 1</sql>
<sql name = "update_money">update money set n = 10000 where id <![CDATA[ < ]]> 20000 </sql>
</function>
<function name="delete">
<sql name = "delete_user"> delete user where id = 1</sql>
<sql name = "delete_dept">delete dept where dept_id = 4</sql>
</function>
<function name = "query">
<sql name = "query_user">select * from user</sql>
</function>
</class>
</xml>