导读:上篇文章介绍了用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,去规范格式,以便和数据库相对应吧。



posted on 2016-05-01 15:09  何红霞  阅读(270)  评论(0编辑  收藏  举报