1、DOM4J处理XML文件
步骤1:引入dom4j的Jar包【dom4j-1.6.1.jar】; 同时引入jaxen的Jar包【jaxen-1.1-beta-6.jar】,方便用类似于SQL的方式对XML的节点进行访问
步骤2:获取XML文件并进行解析
(1)将test01.XML文件放到path路径下
- <?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>
(2)进行解析
- 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;
- /**
- * 解析xml,导入数据表t_test
- *
- * @author Administrator
- *
- */
- public class Test {
- public static void main(String[] args) {
- try {
- Document doc = new SAXReader().read(Thread.currentThread()
- .getContextClassLoader().getResourceAsStream("test01.XML"));
- xmlToDb(doc.selectNodes("/ACCESOS/item/SOCIO"));
- } catch (DocumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- private static void xmlToDb(List itemList) {
- String sql = "INSERT INTO T_TEST (NUMERO, REPOSICION, NOMBRE, TURNOS) VALUES (?, ?, ?, ?)";
- Connection conn = null;
- PreparedStatement pstmt = null;
- try {
- conn = DBUtil.getConnection();
- pstmt = conn.prepareStatement(sql);
- for (Iterator iter = itemList.iterator(); iter.hasNext();) {
- Element elt = (Element) iter.next();
- String numero = elt.elementText("NUMERO");
- int reposicion = Integer.parseInt(elt.elementText("REPOSICION"));
- String nombre = elt.elementText("NOMBRE");
- List turnosList = elt.elements("TURNOS");
- StringBuffer sbStr = new StringBuffer();
- for (int i = 0; i < turnosList.size(); i++) {
- Element turnosElt = (Element) turnosList.get(i);
- sbStr.append(turnosElt.elementText("LU")).append(",")
- .append(turnosElt.elementText("MA")).append(",")
- .append(turnosElt.elementText("MI")).append(",")
- .append(turnosElt.elementText("JU")).append(",")
- .append(turnosElt.elementText("VI")).append(",")
- .append(turnosElt.elementText("SA")).append(",")
- .append(turnosElt.elementText("DO"));
- }
- pstmt.setString(1, numero);
- pstmt.setInt(2, reposicion);
- pstmt.setString(3, nombre);
- pstmt.setString(4, sbStr.toString());
- pstmt.addBatch();
- }
- pstmt.executeBatch();
- System.out.println("xml--->>DB成功!");
- } catch (Exception e) {
- e.printStackTrace();
- }finally {
- DBUtil.close(pstmt);
- DBUtil.close(conn);
- }
- }
- }
【注意】
1、从当前classpath路径中超找文件:
- Thread.currentThread()
- .getContextClassLoader().getResourceAsStream("test01.XML")
本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/396303,如需转载请自行联系原作者