zoukankan      html  css  js  c++  java
  • [drp 4] 使用dom4j,读取XML数据,保存至数据库

    导读:上篇文章介绍了用XML文件配置数据库的连接,然后通过读取XML文件连接数据库的内容,本篇博客介绍读取XML文件,进行数据持久化的操作。PS:从某种意义上来说,经过Scheme校正的XML文件,本身就已经对数据进行了持久化吧。本篇博客,纯属个人总结记录!

    一、XML文件

    <span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
    <ACCESOS>
    	<item>
    		<SOCIO>
    			<NUMERO>00045050</NUMERO>
    			<REPOSICION>0</REPOSICION>
    			<NOMBRE>MOISES MORENO</NOMBRE>
    			<TURNOS>
    				<LU>T1</LU>
    				<MA>T2</MA>
    				<MI>T3</MI>
    				<JU>T4</JU>
    				<VI>T5</VI>
    				<SA>T6</SA>
    				<DO>T7</DO>
    			</TURNOS>
    		</SOCIO>
    	</item>
    	<item>
    		<SOCIO>
    			<NUMERO>00045051</NUMERO>
    			<REPOSICION>0</REPOSICION>
    			<NOMBRE>RUTH PENA</NOMBRE>
    			<TURNOS>
    				<LU>S1</LU>
    				<MA>S2</MA>
    				<MI>S3</MI>
    				<JU>S4</JU>
    				<VI>S5</VI>
    				<SA>S6</SA>
    				<DO>S7</DO>
    			</TURNOS>
    		</SOCIO>
    	</item>
    </ACCESOS></span>


    分析:从此XML文件可以看出,需要建立一个表单,去分别存储:NUMERO等几个数据,而最后一个TURNOS,可以集合存储,也可以是另建一个表单进行存储,本篇总结是集合存储,以 “,”分离。


    二、需要引用的jar包


    三、存储代码

    注意:有一段数据库连接的代码,这里就不做阐述,请看上一篇博客:[Java 经验5]读取Xml配置文件,连接数据库

    <span style="font-family:KaiTi_GB2312;font-size:18px;">package com.angel.xml;
    
    import java.io.File;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.Iterator;
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    public class TestXMLImport {
    
    	/**
    	 * @param args
    	 * @throws SQLException 
    	 */
    	public static void main(String[] args) throws SQLException {
    		
    		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);
    			
    			Document doc=new SAXReader().read(new File("E:/drp/test_xmlImport/xml/test01.XML"));
    			List itemList=doc.selectNodes("/ACCESOS/item/SOCIO");
    			for (Iterator iter=itemList.iterator();iter.hasNext();) {
    				Element el=(Element)iter.next();
    				String numero=el.elementText("NUMERO");
    				String reposicion=el.elementText("REPOSICION");
    				String nombre=el.elementText("NOMBRE");
    				List turnosList=el.elements("TURNOS");
    				
    				System.out.println(nombre);
    				
    				StringBuffer sbString =new StringBuffer();
    				
    				for(Iterator iter1=turnosList.iterator();iter1.hasNext();){
    					Element turnosElt=(Element)iter1.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");
    					sbString.append(lu+","+ma+","+mi+","+ju+","+vi+","+sa+","+doo);
    				}
    				pstmt.setString(1, numero);
    				pstmt.setString(2, reposicion);
    				pstmt.setString(3, nombre);
    				pstmt.setString(4, sbString.toString());
    				pstmt.addBatch();
    			}
    		
    			pstmt.executeBatch();
    			System.out.println("导入数据库成功");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally{
    			DbUtil.close(conn);
    			DbUtil.close(pstmt);
    		}
    	}
    
    }
    </span>

    四、运行结果



    五、总结思考

    其实,采用一些工具去读取Xml文件,也可以获取到数据。之前老师说过,并不是所有展示在页面的数据,都要存入数据库。那么,我在想,有些数据是不是也可以存入到Xml里面(当然大数据量的存储还是呵 呵了)。

    然后,突然想起之前做的批量上传,使用XML,那时候觉得这个XML中包含了数据。可是现在想来,之前运用Xml,大抵只是通过它的Scheme,去规范格式,以便和数据库相对应吧。



  • 相关阅读:
    【索引】SyntaxHighlighter 使用参考
    【索引】博客心得
    SyntaxHighlighter 使用参考(一) 概述
    PEGA 十合一吉他控制器连接电脑玩《吉他英雄3》
    从SourceForge上获取CVS管理的开源代码
    从SourceForge上获取SVN管理的开源代码
    整数哈希介绍
    回文时间
    D2js 是如何处理并发的
    Windows 安装JRuby 生成 war 到 tomcat 运行
  • 原文地址:https://www.cnblogs.com/hhx626/p/6010340.html
Copyright © 2011-2022 走看看