[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,去规范格式,以便和数据库相对应吧。
[drp 4] 使用dom4j,读取XML数据,保存至数据库的更多相关文章
- POI读取Excel数据保存到数据库,并反馈给用户处理信息(导入带模板的数据)
今天遇到这么一个需求,将课程信息以Excel的形式导入数据库,并且课程编号再数据库中不能重复,也就是我们需要先读取Excel提取信息之后保存到数据库,并将处理的信息反馈给用户.于是想到了POI读取文件 ...
- C#winfrom将XML数据保存读取删除
//创建一个数据集,将其写入xml文件 string name = "1.xml"; System.Data.DataSet ds = new System.Data.DataSe ...
- DOM4J读取XML文件
最近在做DRP的项目,其中涉及到了读取配置文件,用到了DOM4J,由于是刚开始接触这种读取xml文件的技术,好奇心是难免的,于是在网上又找了一些资料,这里就结合找到的资料来谈一下读取xml文件的4中方 ...
- 【XML】利用Dom4j读取XML文档以及写入XML文档
Dom4j简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能 ...
- RSS阅读器(一)——dom4j读取xml(opml)文件
接触java不久,偶有收获,最近想做一个web版RSS阅读器来锻炼一下.手头有几个从不同版本的foxmail中导出的opml文件,大家应该都知道,opml文件就是xml格式的.那么就先从这里入手,练习 ...
- 使用dom4j 读取XML文件
第一次接触dom4j的时候,感觉这个东西很神秘,因为之前虽然知道XML文件吧,但从来没有用过,一直感觉XML肯定不好操作.当得知,dom4j可以很容易的操作读取XML文件时,不免有些好奇,那么,用do ...
- 使用dom4j读取xml连接数据库与之单例模式
使用dom4j读取xml ,加入jar包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar public class XmlConfigReader { //懒汉式,延迟加载 ...
- wcf序列化大对象时报错:读取 XML 数据时,超出最大
错误为: 访问服务异常:格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出 错: request.InnerException 消息是“反序 ...
- InnerException 消息是“反序列化对象 属于类型 *** 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。(注意细节)
WEB站点在调用我们WCF服务的时候,只要传入的参数过长,就报如下错误: 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: formD ...
- Web Service 或 WCF调用时读取 XML 数据时,超出最大字符串内容长度配额(8192)解决方法
1.调用服务时服务 当我们使用 Web Service 或 WCF 服务时,常把读取的数据转化为string类型(xml格式),当数据量达到一 定数量时,会出现以下异常: 错误:格式化程序尝试对消息反 ...
随机推荐
- 黄聪:WordPress 后台发布文章时提示用户选择分类
很多用户在后台发布文章,常常会忘记选择分类,所以很有必要添加一个提醒功能,如果没有选择分类,点击发布时,就显示一个提示信息.要实现这个功能,只要将下面的代码添加到主题的 functions.php 即 ...
- MyEclipse-File Serarch时报错:Problems encountered during text search
- suibi11172
http://blog.sina.com.cn/s/blog_12f37f0f00102wi8q.html 七.Python列表操作的函数和方法 列表操作包含以下函数: 1.cmp(list1, li ...
- STM32的串口
一:2个状态位_itstatus与_flagstatus的区别: _flagstatus:只是读状态标志,不管中断是否使能或发生.例如使用查询方式发送数据就需要读改状态位. _itstatus:和中断 ...
- 记录更新rbenv 和 ruby-build安装2.3的ruby注意细节
安装就不说了,官网有,但是今天发布了ruby2.3,所以更新一下 进入.rbenv目录,执行git pull 更新,但是更新了rbenv,执行rbenv install -l 并没有最新的2.3.0 ...
- .net 程序集自动生成版本号
一. 版本号自动生成方法 只需把 AssemblyInfo.cs文件中的 [assembly:AssemblyVersion("1.0.0.0")]改成 [assembly:Ass ...
- Redis使用详细教程(转)
一.Redis基础部分: 1.redis介绍与安装比mysql快10倍以上 *****************redis适用场合**************** 1.取最新N个数据的操作 2.排行榜应 ...
- C++学习49 对二进制文件的读写操作
二进制文件不是以ASCII代码存放数据的,它将内存中数据存储形式不加转换地传送到磁盘文件,因此它又称为内存数据的映像文件.因为文件中的信息不是字符数据,而是字节中的二进制形式的信息,因此它又称为字节文 ...
- Dubbo 服务暴露注册流程
Dubbo的应用会在启动时完成服务注册或订阅(不论是生产者,还是消费者)如下图所示. 图中小方块Protocol, Cluster, Proxy, Service, Container, Regist ...
- Android——TableLayout
TableLayout的行数由开发人员直接指定,即有多少个TableRow对象(或View控件),就有多少行. TableLayout的列数等于含有最多子控件的TableRow的列数.如第一Table ...