博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java学习——XML文件导入
阅读量:4262 次
发布时间:2019-05-26

本文共 7045 字,大约阅读时间需要 23 分钟。

       刚学习java不久,在做DRP分销商管理这个项目中,发现很多新东西,需要我们不断总结。今天我们就来介绍一下导入XML文件。

       在实际应用中,导入是一项很重要的功能,一般来说我们常用的是导入Excel,Word等,但是今天我们要导入的是XML文件,因为XML是一种纯文本文件,具有很好的兼容性和可扩展性,在数据传输和共享的时候更具有通用性。


1、需要导入的XML文件

       文件中每一个标签如< NUMERO >、< REPOSICION >等,对应数据库中的一个字段。当我们引入相应的jar包,如dom4j等,之后就可以编写导入的方法。

00045050
0
MOISES MORENO
T1
T2
T3
T4
T5
T6
T7
00045051
0
RUTH PENA
S1
S2
S3
S4
S5
S6
S7

2、连接数据库的类方法

       此类用于连接数据库,类似于之前在.net那边使用的SQLHelper。

/** * 封装数据常用操作 * @author Administrator * */public class DbUtil {
/** * 取得Connection * @return */ public static Connection getConnection(){ Connection conn=null; try { Class.forName("oracle.jdbc.driver.OracleDriver");//加载驱动 String url="jdbc:oracle:thin:@192.168.26.206:1521:ORCL"; //连接数据库的用户名和密码 String username="shiqidrp"; String password="shiqidrp"; conn=DriverManager.getConnection(url,username,password); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } /** * 关闭ResultSet对象,释放资源 * @param rs */ public static void close(ResultSet rs) { if(rs!=null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 关闭Connection对象,释放资源 * @param conn */ public static void close(Connection conn) { if(conn!=null) { try { conn.close(); }catch(SQLException e) { e.printStackTrace(); } } } /** * 关闭PreparedStatement对象,释放资源 * @param pstmt */ public static void close(PreparedStatement pstmt) { if(pstmt!=null) { try { pstmt.close(); }catch(SQLException e) { e.printStackTrace(); } } } /** * 关闭Statement对象,释放资源 * @param pstmt */ public static void close(Statement pstmt) { if(pstmt!=null) { try { pstmt.close(); }catch(SQLException e) { e.printStackTrace(); } } } /** * 开启事务 * @param conn */ public static void beginTransaction(Connection conn) { try { if(conn!=null){ if(conn.getAutoCommit()) { conn.setAutoCommit(false); } } } catch (SQLException e) { } } /** * 关闭事务 * @param conn */ public static void commitTransaction(Connection conn) { try { if(conn!=null){ if(!conn.getAutoCommit()) { conn.commit(); } } } catch (SQLException e) { } } /** * 回滚事务 * @param conn */ public static void rollbackTransaction(Connection conn) { try { if(conn!=null){ if(!conn.getAutoCommit()) { conn.rollback(); } } } catch (SQLException e) { } } /** * 重置事务 * @param conn */ public static void resetTransaction(Connection conn) { try { if(conn!=null){ if(conn.getAutoCommit()) { conn.setAutoCommit(false); }else{ conn.setAutoCommit(true); } } } catch (SQLException e) { } }}

3、执行导入的类

       利用此类,读取XML文件中的数据并保存到数据库中。

public class TestXMLImport {
/** * @param args */ public static void main(String[] args) { String sql = "insert into T_XML(NUMERO, REPOSICION, NOMBRE, TURNOS) values (?, ?, ?, ?)"; Connection conn = null; PreparedStatement pstmt = null; try { conn=DbUtil.getConnection(); pstmt=conn.prepareStatement(sql); //可以解析XML文件的对象 Document document=new SAXReader().read(new File("G:/提高班/7DRP/drp/test_xmlImport/xml/test01.XML")); //获得我们所需要的节点集 List itemList=document.selectNodes("/ACCESOS/item/SOCIO"); //循环得到节点集中元素,并转化成SQL语句 for(Iterator iterator=itemList.iterator();iterator.hasNext();) { //得到相应的节点的值 Element element=(Element)iterator.next(); String numero = element.elementText("NUMERO"); String reposicion = element.elementText("REPOSICION"); String nombre = element.elementText("NOMBRE"); List turnosList=element.elements("TURNOS"); StringBuffer sbBuffer=new StringBuffer(); //循环得到TURNOS节点下的元素,并拼成串 for(Iterator iterator1=turnosList.iterator();iterator1.hasNext();) { Element turnosElt = (Element)iterator1.next(); String lu = turnosElt.elementText("LU"); String ma = turnosElt.elementText("MA"); String mi = turnosElt.elementText("MI"); String ju = turnosElt.elementText("JU"); String vi = turnosElt.elementText("VI"); String sa = turnosElt.elementText("SA"); String doo = turnosElt.elementText("DO"); sbBuffer.append(lu + "," + ma + "," + mi + "," + ju + "," + vi + "," + sa + "," + doo); } //给SQL语句赋值 pstmt.setString(1, numero); pstmt.setString(2, reposicion); pstmt.setString(3, nombre); pstmt.setString(4, sbBuffer.toString()); //保存生成的SQL语句 pstmt.addBatch(); } //批量执行SQL语句 pstmt.executeBatch(); System.out.println("將xml導入成功"); } catch (Exception e) { e.printStackTrace(); } }}

4总结

       我们在学习过程中,不要仅仅为了实现功能,最主要的还是了解实现的这个过程,这种思路,当我们下次再导入其他格式的文件时就可以自己动手实现了。总之,学习在于总结出的学习方法,如何让学习变得简单,就看我们怎么做总结了。

转载地址:http://jumei.baihongyu.com/

你可能感兴趣的文章
字符串的全排列
查看>>
两个相交的单向链表求交点
查看>>
归并排序
查看>>
寻找无序数组中的全部降序对
查看>>
寻找字符串里第一个只出现过一次的字符
查看>>
消息id乱序接收但顺序发送问题
查看>>
数组最大连续乘积
查看>>
三个非比较排序(线性排序)
查看>>
把奇/偶数(或某种特征的数)都放在数组左边问题
查看>>
海里数据topk
查看>>
字符串左右旋
查看>>
二叉树按层遍历并按层打印和蛇形打印
查看>>
二叉树打印节点和为某值的全部路径
查看>>
打印普通二叉树最大搜索子树
查看>>
bitmap用途
查看>>
LRUCache
查看>>
布隆过滤器
查看>>
Hash总览
查看>>
关于redis
查看>>
排序总览
查看>>