对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);//打印插入语句
             }
 }

你可能感兴趣的:(对xml的处理_Dom4j入门六)