分30条依次解析xml并插入数据库成功
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110 |
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() 方法没看懂怎么用
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。