JAVA学习之 将xml导入到数据库
2015-10-23 10:44
323 查看
我们知道向数据库中插入数将xml导入到数据库将xml导入到数据库据的方式有很多种,以前接触最多的都是通过sql语句简单的插入一条数据,今天要学习是将xml中的数据一次添加到数据库中:
首先要写一个xml文件:
[html]
view plaincopyprint?
<?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>
然后再写读取xml文件的方法:把dom4j的jar包引入到WEB-INFO下的lib下,并添加引用:
[html]
view plaincopyprint?
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public static void main(String[] args){
//插入数据的sql语句
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);
//读取xml文件
Document doc=new SAXReader().read(new File("F:/J2EEmyself/DRP/test_xmlImport/xml/test01.XML"));
//选择xml文件的节点
List itemList=doc.selectNodes("ACCESOS/item/SOCIO");
//遍历读出的xml中的节点
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");
//遍历TURNOS节点中的内容
List turnosList = el.elements("TURNOS");
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);
}
//为sql语句赋值
pstmt.setString(1, numero);
pstmt.setString(2, reposicion);
pstmt.setString(3, nombre);
pstmt.setString(4, sbString.toString());
pstmt.addBatch();
}
pstmt.executeBatch();
System.out.print("将XML导入数据库成功");
}catch(Exception e){
e.printStackTrace();
}finally{
DbUtil.close(pstmt);
DbUtil.close(conn);
}
}
这样很简单就可以把xml文件中的数据读取到数据库中:数据库中的结果如图所示:
其实把xml中的数据读取到数据库中很简单,只要循环遍历每一个节点中的数据就可以。
首先要写一个xml文件:
[html]
view plaincopyprint?
<?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>
<?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>
然后再写读取xml文件的方法:把dom4j的jar包引入到WEB-INFO下的lib下,并添加引用:
[html]
view plaincopyprint?
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public static void main(String[] args){
//插入数据的sql语句
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);
//读取xml文件
Document doc=new SAXReader().read(new File("F:/J2EEmyself/DRP/test_xmlImport/xml/test01.XML"));
//选择xml文件的节点
List itemList=doc.selectNodes("ACCESOS/item/SOCIO");
//遍历读出的xml中的节点
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");
//遍历TURNOS节点中的内容
List turnosList = el.elements("TURNOS");
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);
}
//为sql语句赋值
pstmt.setString(1, numero);
pstmt.setString(2, reposicion);
pstmt.setString(3, nombre);
pstmt.setString(4, sbString.toString());
pstmt.addBatch();
}
pstmt.executeBatch();
System.out.print("将XML导入数据库成功");
}catch(Exception e){
e.printStackTrace();
}finally{
DbUtil.close(pstmt);
DbUtil.close(conn);
}
}
import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public static void main(String[] args){ //插入数据的sql语句 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); //读取xml文件 Document doc=new SAXReader().read(new File("F:/J2EEmyself/DRP/test_xmlImport/xml/test01.XML")); //选择xml文件的节点 List itemList=doc.selectNodes("ACCESOS/item/SOCIO"); //遍历读出的xml中的节点 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"); //遍历TURNOS节点中的内容 List turnosList = el.elements("TURNOS"); 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); } //为sql语句赋值 pstmt.setString(1, numero); pstmt.setString(2, reposicion); pstmt.setString(3, nombre); pstmt.setString(4, sbString.toString()); pstmt.addBatch(); } pstmt.executeBatch(); System.out.print("将XML导入数据库成功"); }catch(Exception e){ e.printStackTrace(); }finally{ DbUtil.close(pstmt); DbUtil.close(conn); } }
这样很简单就可以把xml文件中的数据读取到数据库中:数据库中的结果如图所示:
其实把xml中的数据读取到数据库中很简单,只要循环遍历每一个节点中的数据就可以。
相关文章推荐
- Java ConcurrentModificationException 异常分析与解决方案(顶)
- java客户端和vc程序通信时的编码问题
- Java反射总结(1):解析类结构
- 【Struts2】让s:fielderror没有格式,只显示文本
- Java中获取路径的各种方法
- 将Eclipse Birt 4.5.0 源码引入Eclipse
- Java中的常用异常处理方法
- Spring中Quartz的配置
- mybatis+struts2+html(jstl)+css
- struts2 的大概工作流程
- spring学习笔记
- springmvc学习及源码地址
- 将数组循环右移k位
- java.util.ConcurrentModificationException 异常解决办法及原理(顶)
- java验证码识别--1
- java里程碑之泛型--泛型注意的几点
- java里程碑之泛型--泛型注意的几点
- RxJava+Volley实现图片可点击的TextView
- java国际化中文编码转化
- Java URL处理