分30条依次解析xml并插入数据库成功

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() 方法没看懂怎么用

QQ:540045865 热爱生活,热爱编程。
原文地址:https://www.cnblogs.com/jsRunner/p/3566506.html