[drp 4] 使用dom4j,读取XML数据,保存至数据库

时间:2023-03-09 03:32:00
[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包

[drp 4] 使用dom4j,读取XML数据,保存至数据库

三、存储代码

注意:有一段数据库连接的代码,这里就不做阐述,请看上一篇博客:[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>

四、运行结果

[drp 4] 使用dom4j,读取XML数据,保存至数据库

五、总结思考

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

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