dom4j解析xml

来源:互联网 发布:mac上parallels怎么用 编辑:程序博客网 时间:2024/05/01 19:27

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>

原创粉丝点击