package xxx;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; import xxx.hf.jdbc.StoreIntoMysql; /*
* 解析30条后插入到数据,然后继续插入
*
* */
public class XmlToMysql {
private Document doc = null;
public XmlToMysql(String xmlFile) {
try {
SAXReader reader = new SAXReader();
doc = reader.read(xmlFile); } catch (Exception e) {
e.printStackTrace();
}
} /*
* 返回解析到的元素个数
*/
public int getInfos(String str, String sds) { // str ="Patient";
ArrayList<String[]> infos = new ArrayList<String[]>();
// 标识是最后的30条记录或者不足30条
boolean last = false; // 获得所有str元素
List strs = doc.selectNodes("//" + str); System.out.println(strs.size()); // System.exit(0);
// 遍历指定的所有元素
for (int j = 0; j < strs.size(); j++) {
Element eAdd = ((Element) strs.get(j));
// 遍历指定元素的子元素
String[] strArray = null;
if (str.equals("Patient")) {
strArray = new String[16]; } else {
strArray = new String[15];
}
int m = 0;
for (Iterator i = eAdd.elementIterator(); i.hasNext();) {
Element node = (Element) i.next();
// System.out.println(node.getName() + ":" + node.getText());
// 处理特别的字符串
if (node.getText().indexOf(":") > 0) {
// 这里处理时间问题,插入datetime不会出错
strArray[m] = node.getText().toString().substring(0, 19)
.replace("T", " "); } else {
strArray[m] = node.getText().toString(); }
m++; }
infos.add(strArray); // 判断是否到达最后1条记录
if (j == (strs.size() - 1)) {
System.out.println("这是最后一条记录");
System.out.println(j);
// 设置标识
last = true;
} // 如果集合的长度有30条,就commit一次
// 或则是最后一条记录的时候
if (infos.size() >= 30 || last) {
// 存入数据库
if(str.equals("Patient")){
StoreIntoMysql.StorePatient(infos, sds + str); }else{
StoreIntoMysql.StoreTreat(infos, sds + str); }
// 集合清空
infos.clear(); } } return strs.size();
} }

主要的问题是在于,最后的30条或不足30条。

这里采用的一个变量来判断

这里发现的问题是:集合的清空,我用的clear方法,但是手册中提示过时了,removeAll() 方法没看懂怎么用

分30条依次解析xml并插入数据库成功的更多相关文章

  1. 使用XStream解析复杂XML并插入数据库(二)

    标注黄色地方:我需要加深学习!!! 我写的是webservice,目前具体写webservice的步骤我还不清楚, 整理完小知识开始整理webservice! 针对以下格式的XML进行解析 <? ...

  2. 使用XStream解析复杂XML并插入数据库(一)

    环境: Springboot+mysql 我只想说jpa真的超级好用,准备深入研究一下~ 导入依赖: <dependency> <groupId>org.projectlomb ...

  3. python3.4.3 调用http接口 解析response xml后插入数据库

    工作中需要调用一个http的接口,等不及java组开发,就试着用python去调用.Python版本3.4.3 完整的流程包括:从sqlServer取待调用的合同列表 -> 循环调用http接口 ...

  4. java中解析excel 批量插入数据库

    Facade 层 实现类 (@Service("samePeriodModelImportFacade")) 1.  获取cells 的方法 public Cells getCel ...

  5. jsp--提交表单→插入数据库→成功后返回提示信息

    <%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="u ...

  6. Linux Shell | 解析xml节点

    01 xml文件 # user.xml <user> <name>Toy</name> <sex>man</sex> <room/&g ...

  7. Java MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  8. MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  9. Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库

    Ajax实现将xml文件数据插入数据库的过程所涉及到的内容比较多,所以对于该过程的讲解本人打算根据交互的过程将其分为三个部分,第一部分为构建解析xml文件的javascript库,第二部分为ajax与 ...

随机推荐

  1. POJ 2289 Jamie's Contact Groups

    二分答案+网络最大流 #include<cstdio> #include<cstring> #include<cmath> #include<vector&g ...

  2. MiniProfiler找不到jquery的

    我一直在使用MiniProfiler来衡量网站性能.当我从1.9版本升级到2.0,它停止工作.我改变了命名空间从MvcMiniProfiler StackExchange.Profiling的.但是, ...

  3. Recover Polygon (easy)

    Recover Polygon (easy) The zombies are gathering in their secret lair! Heidi will strike hard to des ...

  4. Blocks(闭包)

    转自:http://my.oschina.net/joanfen/blog/317644?fromerr=ATWzC3Y2 Block 与传统代码相比较更加轻量,调用简洁方便,而且可以返回多个参数,使 ...

  5. (转)java 排序算法

    排序算法汇总(java实现,附源代码)   整理系统的时候发现了原来写的各种算法的总结,看了一下,大吃一惊,那时候的我还如此用心,具体的算法,有的已经模糊甚至忘记了,看的时候就把内容整理出来,顺便在熟 ...

  6. Python之路:堡垒机实例以及数据库操作

    一.堡垒机前戏 开发堡垒机之前,先学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作. SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: ...

  7. Highcharts一些属性

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  8. Socket.io官方聊天室DEMO的学习笔记

    照着Socket.io官方的聊天室代码敲了一遍,遇到了一个奇怪的问题: 每次点击SEND按钮的时候,都会重新刷新页面. 在点击页面的一瞬间,看到了正在加载jquery的提示, 然后以为是jquery用 ...

  9. Git 常用命令汇总

    #安装git yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum install -y g ...

  10. php的命名空间层级与目录层级是一致的吗?

    php的命名空间和目录的层级之间并不是说一定 要一致,两者之间没有必然的联系.并没有直接的关联,当然了,推荐关联起来,不然管理会非常混乱,但你确实可以自己实现一个Autoload来管理“混乱”的nam ...