[drp 4] 使用dom4j,读取XML数据,保存至数据库
2016-05-01 15:09
555 查看
导读:上篇文章介绍了用XML文件配置数据库的连接,然后通过读取XML文件连接数据库的内容,本篇博客介绍读取XML文件,进行数据持久化的操作。PS:从某种意义上来说,经过Scheme校正的XML文件,本身就已经对数据进行了持久化吧。本篇博客,纯属个人总结记录!
分析:从此XML文件可以看出,需要建立一个表单,去分别存储:NUMERO等几个数据,而最后一个TURNOS,可以集合存储,也可以是另建一个表单进行存储,本篇总结是集合存储,以 “,”分离。
然后,突然想起之前做的批量上传,使用XML,那时候觉得这个XML中包含了数据。可是现在想来,之前运用Xml,大抵只是通过它的Scheme,去规范格式,以便和数据库相对应吧。
一、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,去规范格式,以便和数据库相对应吧。
相关文章推荐
- [drp 4] 使用dom4j,读取XML数据,保存至数据库
- MySql中InnoDB引擎索引
- 关于MYSQL 和INNODB的逻辑关系图。最好的理解是一点点动手做,观察,记录,思考。
- Hive 和普通关系数据库的异同
- HTML本地数据库indexDataBase的使用示例
- redis在windows下安装和PHP中使用
- Oracle.ManagedDataAccess.Client注意事项
- [原]SQLite的学习系列之获取数据库版本
- Java调用Oracle中的Package
- Mysql导入大文件的处理
- Mysql性能优化
- 使用mysql应该注意的细节
- Hibernate内的各种文件
- jdbcTemplate 插入Mysql 并返回主键ID
- Oracle 12C 在线重命名和迁移数据文件
- HTML的本地数据库报错
- redis安装
- Memcache安装与入门
- 使用Shell脚本实现自动化静默安装Oracle软件
- 微信公众号的开发之旅(2)-- mysql数据库的建立与Java代码建立