【java】xml文件表建立及读取环境搭建并采用DOM4J完成XML文件导入到数据库
来源:互联网 发布:乐清市知临学校招聘 编辑:程序博客网 时间:2024/05/11 20:00
java一种简单的解析xml方法是用DOM进行解析, dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的,dom4j用于处理xml是很常用的技术,本篇博客介绍xml文件表建立及读取环境搭建并采用DOM4J完成XML文件导入到数据库。
1.XML文件
2.根据xml文件建表
表名:T_XML
字段:
使用PD建好表之后点击database选择database Generation导出为sql脚本
3.使用PL/SQL导入sql脚本
(1)选择脚本所在文件夹
(2)执行脚本
这样刷新就可以看到这张表了。
4.读取环境搭建
需要注意的是我们需要把dom4j用于处理xml是很常用的技术,把lib中的文件引入到classpath中
5.采用DOM4J完成XML文件导入到数据库
(1)数据库配置公共类DbUtil类部分:
package com.bjpowernode.xml;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import com.bjpowernode.drp.util.JdbcConfig;import com.bjpowernode.drp.util.XmlConfigReader;/** * 封装数据常用操作 * @author www * */public class DbUtil {/** * 取得Connection * @return */public static Connection getConnection() {Connection conn = null;try {JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();Class.forName(jdbcConfig.getDriverName());conn = DriverManager.getConnection(jdbcConfig.getUrl(), jdbcConfig.getUserName(), jdbcConfig.getPassword());} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}//关闭数据库连接public static void close(Connection conn) {if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}//关闭PreparedStatementpublic static void close(Statement pstmt) {if (pstmt != null) {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}}//关闭数据库连接public static void close(ResultSet rs ) {if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}}//事务开始前的准备工作,设置为手动提交public static void beginTransaction(Connection conn) {try {if (conn != null) {if (conn.getAutoCommit()) {conn.setAutoCommit(false); //手动提交}}}catch(SQLException e) {}}//提交事务public static void commitTransaction(Connection conn) {try {if (conn != null) {if (!conn.getAutoCommit()) {conn.commit();}}}catch(SQLException e) {}}//回滚事务public static void rollbackTransaction(Connection conn) {try {if (conn != null) {if (!conn.getAutoCommit()) {conn.rollback();}}}catch(SQLException e) {}}//重置数据库连接,恢复到原来状态public static void resetConnection(Connection conn) {try {if (conn != null) {if (conn.getAutoCommit()) {conn.setAutoCommit(false);}else {conn.setAutoCommit(true);}}}catch(SQLException e) {}}public static void main(String[] args) {System.out.println(DbUtil.getConnection());}}
(2)TestXMLImport类
TestXMLImport类用于读取XML文件中的信息,并写入数据库表中
package com.bjpowernode.xml;import java.io.File;import java.sql.Connection;import java.sql.PreparedStatement;import java.util.Iterator;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class TestXMLImport {/* * @param args */public static void main(String[] args){String sql="insert into T_XML(NUMERO,REPOSICION,MOMBRE,TURNOS) values(?,?,?,?)";Connection conn = null;PreparedStatement pstmt = null;try {conn =DbUtil.getConnection();pstmt =conn.prepareStatement(sql);//找到需要读取的XML文件的位置Document doc = new SAXReader().read(new File("G:/1.计算机/韦文文/DRP/test_xmlImport/xml/test01.XML"));//提取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");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());//把这条执行语句加到PreparedStatement对象的批处理命令中 pstmt.addBatch();}//把以上添加到批处理命令中的所有命令一次过提交给数据库来执行 pstmt.executeBatch();System.out.println("将XML导入数据库成功!");} catch (Exception e) {e.printStackTrace();}finally{DbUtil.close(pstmt);DbUtil.close(conn);}}}
6.总结
(1)XPath即为XML路径语言,它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。
(2)采用pstmt.addBatch(),把若干sql语句装载到一起,然后一次送到数据库执行,减少了数据的传输时间,执行只需要很短的时间,提高数据交互的效率。
0 0
- 【java】xml文件表建立及读取环境搭建并采用DOM4J完成XML文件导入到数据库
- 【DRP】采用dom4j完成XML文件导入数据库
- DRP中利用dom4j完成XML文件导入数据库
- 采用Dom4j及xpath解析xml文件
- java采用Dom4j读写xml文件
- java中采用dom4j解析xml文件
- xml文件读取-dom4j
- dom4j读取xml文件
- dom4j读取xml文件
- dom4j读取xml文件
- Dom4j读取XML文件
- Dom4j读取xml文件
- DOM4J读取XML文件
- DOM4J读取XML文件
- Dom4j读取Xml文件
- dom4j读取xml文件
- Dom4j读取xml文件
- Dom4j+PLSQL XML文件导入数据库
- 2016.08.18【初中部 NOIP普及组 】模拟赛
- redis集群方案-一致性hash算法
- 指针数组和数组指针的区别
- CodeForces-691E Xor-sequences(矩阵快速幂)
- 第三方分享和登录时assets目录下ShareSDK.xml
- 【java】xml文件表建立及读取环境搭建并采用DOM4J完成XML文件导入到数据库
- js通过key-value取值
- 自己动手编写仿QQ的app -1注册界面by sdust iot zhl
- Interesting drink--二分
- poj 1260 Pearls
- HDU 5861 Road(线段树)
- CF 696E ...Wait for it... 链剖练手题
- mysql远程可登录,本地无法登陆问题
- 使用strace, ltrace寻找故障原因的线索