/**
纯属本人习惯.仅供参考!
*/
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class ImportXml {
   
      /** 
    * 给定XML,解析后插入数据库
    *
    * @param FilePath  文件的路径名:例如:"F:/l"
    * @throws ClassNotFoundException
    *
    */ 
   
    public static void importXml(String filePath){
       
        System.out.println("============开始导入============");   
     
            // -------------jdbc代码   
          try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            String url = "jdbc:oracle:thin:@201.200.200.254:1521:xe";
            String user = "sspa";
            String password = "sspa"; 
            Connection con = Connection(url, user, password);
            //打开事物
            con.setAutoCommit(false);
            //SQL执行语句
            String exeSql="";
            //插入值
            String insertValue="";
            //插入的列名
            String insertColumName="";
            //更新的SQL语句
dom4j读取xml
            String updateSQL="";
            //SQL操作语句(用来判断数据库里就没有记录等)
            String optionSql="";
            //当前记录的ID值
            String rowID="";
            //ID的列名
            String idName="";
            int    flag=0;
           
            //------------读取XML文件,获得document对象.
            SAXReader reader = new SAXReader(); 
            reader.setEncoding("GBK"); 
            Document  document=null;
            document = ad(new File(filePath));
            //-----------获取文档的根节点.
            Element root= RootElement(); 
       
            //遍历所有table节点
            for(Iterator rootIter = root.elementIterator("Table"); rootIter.hasNext();){
                  Element tableNode = (Element) ();
                // 得到table节点的Name属性值,用来判断属于哪一个数据库表
                  String tableName=tableNode.attributeValue("Name");
                  //打印数据库表名
                  System.out.println("数据库表名"+tableName);
                  //取得table节点下的所有子节点,并且遍历
   
                  for(Iterator tableIter = tableNode.elementIterator(); tableIter.hasNext();){             
                      Element row = (Element) ();
                  //得到每一条记录里面的数据
                      for(Iterator rowIter = row.elementIterator(); rowIter.hasNext();){
                         
                          flag++;
           
                          Element col = (Element) ();
                         
                         
                          if (flag==1) {
                             
                              Text();
                              Name();
                           
                          }
                       
                          //得到当前节点的名字,用来判断属于数据库中的哪一列
                          String Name();
                          //得到该节点的字段类型
                          String columType=col.attributeValue("type");
                 
                          //得到当前节点的值,用来插入数据库中
                          //列值。默认为空字符
                          String columValue="";
                          //判断节点字段的类型,然后转换字段类型
                          if (columType.equals("date")) {
                                columValue="to_date(substr('"+Text()+"',1,10),'yyyy-MM-dd')";
                   
                          }else{
                                columValue="'"+Text()+"'";
                              // System.out.println(columType);
                          }
                       
                   
                        //判断是否为最后一个,如果是则不加','号
                        if (rowIter.hasNext()) {
                              insertValue+=columValue+",";
                              insertColumName+=columName+",";
                             
                        }else{
                            insertValue+=columValue;
                            insertColumName+=columName;
                           
                        }
                        //判断是否为最后一个,如果是则不加','号
                        if (rowIter.hasNext()) {
                            updateSQL+=columName+"="+columValue+",";
                        }else{
                           
                            updateSQL+=columName+"="+columValue;
                        }
             
                     
                     
                   
                     
                  }
                     
                      optionSql="select * from "+tableName+" where "+idName+"='"+rowID+"'";
                        PreparedStatement optionps = con.prepareStatement(optionSql); 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。