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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值