利用dom4j 解析xml 文档并将数据存入数据库





import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


// 使用dom4j无限层次解析xml字符串
public class BootXml {
       // 解析xml
  Map<String,String> entity=new HashMap<String, String>();
   public Map xmlParse(String src){
  
   try {
    SAXReader reader=new SAXReader();
    Document doc =  reader.read(new File(src));  
// Document doc=DocumentHelper.parseText(src); System.out.println("3");
// 获得跟节点
Element rootElement=doc.getRootElement();
// 得到所有第一节子节点
List<Element> eles=rootElement.elements();
for(int i=0;i<=eles.size();i++){
getsubele(eles.get(i));
}
} catch (Exception e) {
// TODO: handle exception
}
   return entity;
   
   }
   
   private void getsubele(Element element) {
// 判断该节点是不是父节点
 
   if(ishassubele(element)){
    List<Element> ele=element.elements();
    for(int j=0;j<ele.size();j++){
    getsubele(ele.get(j));
    }
   
   }else{
   
   // System.out.println("key="+element.getName()+"   value="+element.getText());
   entity.put(element.getName(), element.getText());
   return;
   }
   


}


public boolean ishassubele(Element e){
   
   return !e.isTextOnly();
   
   }
   
 public static void main(String[] args) {


 Map<String,String> entity= new BootXml().xmlParse("001.xml");



int r=-1;
String sql = "insert into student (id,name) values(?,?)";
Connection conn  = DbUtil.openConn();
try {
PreparedStatement preStmt = DbUtil.getPreparedStatement(conn, sql);
preStmt.setString(1, (String) entity.get("key_id"));
preStmt.setString(2, (String) entity.get("key_name"));



int i = preStmt.executeUpdate();
if(i>0){
r=1;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
     System.out.println("rrrrrrrrrrrrrrrrrrrrr:"+r); 
 //System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
 


}
   
}

//数据库公共方法
-----------------------------------------------------------------------------

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;


public class DbUtil {
//private static String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";//2005
private static String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";//2000
private static Connection conn;
private static String userName = "scott";
private static String password = "12345";
private static Statement stmt;
private static PreparedStatement preStmt;
private static String url = "jdbc:sqlserver://localhost:1433;databaseName=bysj";

public static Connection openConn(){
try {
Class.forName(driver);
conn=DriverManager.getConnection(url,userName,password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static Statement getStatement(Connection conn)throws Exception{
if(conn!=null)
{
return conn.createStatement();
}
return null;
}
public static PreparedStatement getPreparedStatement(Connection conn,String sql) throws Exception{
if(conn!=null){
return conn.prepareStatement(sql);
}
return null;
}
public static void closeResource() throws Exception{
if(conn!=null){
conn.close();
}
if(stmt!=null){
stmt.close();
}
if(preStmt!=null){
preStmt.close();
}
}
}


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值