XML文件处理总结 - 1

1、DOM4J处理XML文件

步骤1:引入dom4j的Jar包【dom4j-1.6.1.jar】; 同时引入jaxen的Jar包【jaxen-1.1-beta-6.jar】,方便用类似于SQL的方式对XML的节点进行访问

步骤2:获取XML文件并进行解析

(1)将test01.XML文件放到path路径下

 
 
  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> 

(2)进行解析

 
 
  1. import java.sql.Connection; 
  2. import java.sql.PreparedStatement; 
  3. import java.util.Iterator; 
  4. import java.util.List; 
  5.  
  6. import org.dom4j.Document; 
  7. import org.dom4j.DocumentException; 
  8. import org.dom4j.Element; 
  9. import org.dom4j.io.SAXReader; 
  10.  
  11. /** 
  12.  * 解析xml,导入数据表t_test 
  13.  *  
  14.  * @author Administrator 
  15.  *  
  16.  */ 
  17. public class Test { 
  18.  
  19.     public static void main(String[] args) { 
  20.         try { 
  21.             Document doc = new SAXReader().read(Thread.currentThread() 
  22.                     .getContextClassLoader().getResourceAsStream("test01.XML")); 
  23.             xmlToDb(doc.selectNodes("/ACCESOS/item/SOCIO")); 
  24.         } catch (DocumentException e) { 
  25.             // TODO Auto-generated catch block 
  26.             e.printStackTrace(); 
  27.         } 
  28.     } 
  29.  
  30.     private static void xmlToDb(List itemList) { 
  31.         String sql = "INSERT INTO T_TEST (NUMERO, REPOSICION, NOMBRE, TURNOS) VALUES (?, ?, ?, ?)"
  32.         Connection conn = null
  33.         PreparedStatement pstmt = null
  34.         try { 
  35.             conn = DBUtil.getConnection(); 
  36.             pstmt = conn.prepareStatement(sql); 
  37.             for (Iterator iter = itemList.iterator(); iter.hasNext();) { 
  38.                 Element elt = (Element) iter.next(); 
  39.                 String numero = elt.elementText("NUMERO"); 
  40.                 int reposicion = Integer.parseInt(elt.elementText("REPOSICION")); 
  41.                 String nombre = elt.elementText("NOMBRE"); 
  42.  
  43.                 List turnosList = elt.elements("TURNOS"); 
  44.                 StringBuffer sbStr = new StringBuffer(); 
  45.                 for (int i = 0; i < turnosList.size(); i++) { 
  46.                     Element turnosElt = (Element) turnosList.get(i); 
  47.                     sbStr.append(turnosElt.elementText("LU")).append(","
  48.                             .append(turnosElt.elementText("MA")).append(","
  49.                             .append(turnosElt.elementText("MI")).append(","
  50.                             .append(turnosElt.elementText("JU")).append(","
  51.                             .append(turnosElt.elementText("VI")).append(","
  52.                             .append(turnosElt.elementText("SA")).append(","
  53.                             .append(turnosElt.elementText("DO")); 
  54.                 
  55.                 pstmt.setString(1, numero); 
  56.                 pstmt.setInt(2, reposicion); 
  57.                 pstmt.setString(3, nombre); 
  58.                 pstmt.setString(4, sbStr.toString()); 
  59.                 pstmt.addBatch(); 
  60.             } 
  61.             pstmt.executeBatch(); 
  62.             System.out.println("xml--->>DB成功!"); 
  63.         } catch (Exception e) { 
  64.             e.printStackTrace(); 
  65.         }finally { 
  66.             DBUtil.close(pstmt); 
  67.             DBUtil.close(conn); 
  68.         } 
  69.     } 
  70.  

【注意】

1、从当前classpath路径中超找文件:

  1. Thread.currentThread() 
  2.                     .getContextClassLoader().getResourceAsStream("test01.XML")

 

 

 本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/396303,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值