什么是dom4j:它就是java的一个xml api,用来读写XML文件的。
第一步:用eclipse创建一个简单的java project
第二步:导入所需要的包,这里导入到的是mysql数据库
dom4j-1.6.1 (1).jar
jaxen-1.1-beta-6.jar
mysql-connector-java-5.1.41-bin.jar
所需要包的地址点击打开链接
第三步:编写DBUtil.java 连接数据库
public class DBUtil {
private static final String URL="jdbc:mysql://127.0.0.1:3306/xmlinto?useUnicode=true&characterEncoding=utf-8";
private static final String USER="root";
private static final String PASSWORD="123456";
private static Connection conn=null;
static {
try {
//1.加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
//2.获得数据库的连接
conn=DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
//将获得的数据库与java的链接返回(返回的类型为Connection)
public static Connection getConnection(){
return conn;
}
public static void close(PreparedStatement pstmt) {
// TODO Auto-generated method stub
}
public static void close(Connection conn2) {
// TODO Auto-generated method stub
}
}
第四步:编写xml文件
<?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>
第五步:编写TestXMLImport.java
public class TestXMLImport { public static void main(String[] args) { String sql="insert into T_XML(NUMERO, REPOSICION, NOMBRE, TURNOS) values (?, ?, ?, ?)"; Connection conn = null; PreparedStatement pstmt = null; try { conn = DBUtil.getConnection(); pstmt = conn.prepareStatement(sql); //读取xml文件,按路径读取,获得document对象 Document doc = new SAXReader().read(new File("D://xml/T_XML.xml")); //选择xml文件的节点 List itemList = doc.selectNodes("/ACCESOS/item/SOCIO"); //遍历读出的xml中的节点 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"); //遍历TURNOS节点中的内容 List turnosList = el.elements("TURNOS"); StringBuffer sbString = new StringBuffer(); for (Iterator iterator = turnosList.iterator(); iterator .hasNext();) { Element turnosElt = (Element) iterator.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); } //为sql语句赋值 pstmt.setString(1, numero); pstmt.setString(2, reposicion); pstmt.setString(3, nombre); pstmt.setString(4, sbString.toString()); pstmt.addBatch(); } //批量执行sql语句 pstmt.executeBatch(); System.out.print("将XML导入数据库成功"); } catch (Exception e) { e.printStackTrace(); }finally{ DBUtil.close(pstmt); DBUtil.close(conn); } } }
数据库表设计