之前了解过一篇,是通过Dom4j读取XML文件http://blog.csdn.net/huo065000/article/details/47866461,由于一些原因,我们会遇到一些这样的情况 ,解析XML,将其放到数据库中保存,然后再适当的时候再读取出来显示,所以如何将我们的这次我们借助于dom4j来完成我们XML文件存入数据库的操作。
Step-1:
在进行操作之前,你必须要存在一个这样的数据库表来进行接收操作。对于数据库表的创建,我们可以采用PL SQL 直接导入sql操作,然后直接存入数据库:文件--打开--选择SQL Script,则可以导入写好的sql语句。这样想要的表则存入数据库中。
Step-2:
数据库表创建成功之后,则可以回到我们的工具(Eclipse/MyEclipse……)上,建立lib包,然后引入三个必要的jar包
/** * @ClassName: DbUtil * @Description: 封装数据库常用操作 * @author: HuoYaJing * @date:2015年10月6日 下午6:51:42 */ public class DbUtil { /** * @throws SQLException * @Title: getConnection * @Description: 取得Connection * @param @return * @return Connection * @throws */ public static Connection getConnection() { // 加载驱动,使用反射来实现 Connection conn = null; try { //驱动连接 Class.forName("oracle.jdbc.driver.OracleDriver"); // 连接 String url = "jdbc:oracle:thin:@127.0.0.1:1521:ORCLE"; String username = "C##drp1"; //连接数据库的用户名 String password = "drp1"; //连接数据库的密码 conn = DriverManager.getConnection(url, username, password); //进行连接 } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return conn; }TestXMLImport中进行操作:
public static void main(String[] args) throws SQLException { // TODO Auto-generated method stub // 执行插入的SQL语句 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 doc=new SAXReader().read(new File("E:\\提高班学习资料\\接口管理系统\\Source\\test_xmlImport\\xml\\test01.xml")); // 查找对应的信息,从XMl中找对应的层层关系 List itemList= doc.selectNodes("/ACCESOS/item/SOCIO"); // 遍历 for(Iterator iter=itemList.iterator();iter.hasNext();){ Element el=(Element) iter.next(); // 使用Element的elementText属性取值,将值一一取出来 String numero=el.elementText("NUMERO"); String reposicion=el.elementText("REPOSICION"); String nombre=el.elementText("NOMBRE"); // 返回集合 List turnosList=el.elements("TURNOS"); StringBuffer sbsString=new StringBuffer(); // 第二层循环,同理将值一一取出来赋值给变量sbsString for(Iterator iter1=turnosList.iterator();iter1.hasNext();){ Element turnosElt=(Element)iter1.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"); sbsString.append(lu + "," + ma + "," + mi + "," + ju + "," + vi + "," + sa + "," + doo); } // 通过pstmt赋值 pstmt.setString(1, numero); pstmt.setString(2, reposicion); pstmt.setString(3,nombre); pstmt.setString(4, sbsString.toString()); pstmt.addBatch(); } pstmt.executeBatch(); // 提示 System.out.println("将XML导入数据库成功"); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ // 关闭 DbUtil.close(pstmt); DbUtil.close(conn); } }工作完成,只要对其进行单元测试在console输出框中输出: