JAVA学习之 将xml导入到数据库

来源:互联网 发布:在淘宝某店被限制购买 编辑:程序博客网 时间:2024/06/05 09:08

 我们知道向数据库中插入数xml导入到数据库xml导入到数据库据的方式有很多种,以前接触最多的都是通过sql语句简单的插入一条数据,今天要学习是将xml中的数据一次添加到数据库中:

    首先要写一个xml文件:

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <ACCESOS>  
  3.     <item>  
  4.        <SOCIO>  
  5.            <NUMERO>00045050</NUMERO>  
  6.            <REPOSICION>0</REPOSICION>  
  7.            <NOMBRE>MOISES MORENO</NOMBRE>  
  8.            <TURNOS>  
  9.                 <LU>T1</LU>  
  10.                 <MA>T2</MA>  
  11.                 <MI>T3</MI>  
  12.                 <JU>T4</JU>  
  13.                 <VI>T5</VI>  
  14.                 <SA>T6</SA>  
  15.                 <DO>T7</DO>  
  16.            </TURNOS>  
  17.         </SOCIO>  
  18.     </item>  
  19.     <item>  
  20.          <SOCIO>  
  21.                <NUMERO>00045051</NUMERO>  
  22.                <REPOSICION>0</REPOSICION>  
  23.                <NOMBRE>RUTH PENA</NOMBRE>  
  24.                <TURNOS>  
  25.                     <LU>S1</LU>  
  26.                     <MA>S2</MA>  
  27.                     <MI>S3</MI>  
  28.                     <JU>S4</JU>  
  29.                     <VI>S5</VI>  
  30.                     <SA>S6</SA>  
  31.                     <DO>S7</DO>  
  32.                </TURNOS>  
  33.           </SOCIO>       
  34.     </item>  
  35. </ACCESOS>  

          然后再写读取xml文件的方法:dom4jjar包引入到WEB-INFO下的lib下,并添加引用:

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. import org.dom4j.Document;  
  2. import org.dom4j.Element;  
  3. import org.dom4j.io.SAXReader;  
  4. public static void main(String[] args){  
  5.         //插入数据的sql语句  
  6.         String sql="insert into T_XML(NUMERO, REPOSICION, NOMBRE, TURNOS) values (?, ?, ?, ?)";  
  7.         Connection conn=null;  
  8.         PreparedStatement pstmt=null;  
  9.           
  10.         try{  
  11.             conn=DbUtil.getConnection();  
  12.             pstmt=conn.prepareStatement(sql);  
  13.             //读取xml文件  
  14.             Document doc=new SAXReader().read(new File("F:/J2EEmyself/DRP/test_xmlImport/xml/test01.XML"));  
  15.             //选择xml文件的节点  
  16.             List itemList=doc.selectNodes("ACCESOS/item/SOCIO");  
  17.             //遍历读出的xml中的节点  
  18.             for(Iterator iter=itemList.iterator();iter.hasNext();){  
  19.                 Element el=(Element)iter.next();  
  20.                 //读取节点内容  
  21.                 String numero=el.elementText("NUMERO");  
  22.                 String reposicion = el.elementText("REPOSICION");  
  23.                 String nombre = el.elementText("NOMBRE");  
  24.                 //遍历TURNOS节点中的内容  
  25.                 List turnosList = el.elements("TURNOS");  
  26.                 StringBuffer sbString=new StringBuffer();  
  27.                 for(Iterator iter1=turnosList.iterator();iter1.hasNext();){                   
  28.                     Element turnosElt=(Element)iter1.next();  
  29.                     String lu = turnosElt.elementText("LU");  
  30.                     String ma = turnosElt.elementText("MA");  
  31.                     String mi = turnosElt.elementText("MI");  
  32.                     String ju = turnosElt.elementText("JU");  
  33.                     String vi = turnosElt.elementText("VI");  
  34.                     String sa = turnosElt.elementText("SA");  
  35.                     String doo = turnosElt.elementText("DO");  
  36.                     sbString.append(lu + "," + ma + "," + mi + "," + ju + "," + vi + "," + sa + "," + doo);  
  37.                 }  
  38.                 //为sql语句赋值  
  39.                 pstmt.setString(1, numero);  
  40.                 pstmt.setString(2, reposicion);  
  41.                 pstmt.setString(3, nombre);  
  42.                 pstmt.setString(4, sbString.toString());  
  43.                 pstmt.addBatch();  
  44.             }  
  45.             pstmt.executeBatch();  
  46.             System.out.print("将XML导入数据库成功");  
  47.         }catch(Exception e){  
  48.             e.printStackTrace();  
  49.         }finally{  
  50.             DbUtil.close(pstmt);  
  51.             DbUtil.close(conn);  
  52.         }  
  53.     }  

这样很简单就可以把xml文件中的数据读取到数据库中:数据库中的结果如图所示:

 

其实把xml中的数据读取到数据库中很简单,只要循环遍历每一个节点中的数据就可以。


0 0
原创粉丝点击