對xml的處理_Dom4j入門六

以下介紹Dom4j的環境是:windowsXP、eclipse3.5.0、jdk1.6、Dom4j1.6.1.jar

Dom4j1.6.1.jar架包可以在本人的資源中下載,歡迎下載使用

需求:通過xml的最底層標籤名稱創建表,並將xml標籤中的內容寫入到數據庫中

現在主要是:獲取創建表的語句和插入數據的語句

 

public static void analyticalXML(String xmlpath){
          SAXReader readerxml=new SAXReader();
          Document doc=null;
          try {//讀取一個形式良好的xml文件形成一個document對象
                  doc=readerxml.read(new File(xmlpath));//"C:/doc.xml"
                  Element root=doc.getRootElement();//獲取該對象的根節點
                  getchildElement(doc,root);
         } catch (DocumentException e) {
                  e.printStackTrace();
         }
 }
 //遞歸獲取子節點
 public static void getchildElement(Document doc,Element elementa){
         String createsql = "create table student(";
         String insertsql = "insert into  student(";
         String valuessql = "values(";
  
         //所有最底層的標籤(建表字段)都在一個標籤下面
         for(Iterator it=elementa.elementIterator();it.hasNext();){
                 Element child=(Element) it.next();//獲取子節點
                 List attributes  = new ArrayList();
                 attributes = child.attributes();
                 Iterator itchild = child.elementIterator();
                 if(!itchild.hasNext()&&attributes.size()<1){//是需要的最底層節點
                          createsql += child.getName() + " varchar(10) ,";
                          insertsql += child.getName() + ",";
                          if(child.getText().length()>0){
                                    valuessql += child.getText() + ",";
                          }else{
                                    valuessql += "''" + ","; 
                         }
                 }else {
                          getchildElement(doc,child);//不是最底層節點,則遞歸獲取下一層子節點 
                  }
          }
           
            createsql = createsql.substring(0,createsql.length()-1) + ")";
            insertsql = insertsql.substring(0,insertsql.length()-1) + ")";
            valuessql = valuessql.substring(0,valuessql.length()-1) + ")";
            if(createsql.length()>50){//如果建表語句createsql是完整的,那麼其長度肯定大於50
                      System.out.println();
                      System.out.println(createsql);//打印建表語句
                      System.out.println(insertsql + valuessql);//打印插入語句
             }
 }

發佈了43 篇原創文章 · 獲贊 6 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章