/**
纯属本人习惯.仅供参考!
*/
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class ImportXml {
/**
* 给定XML,解析后插入数据库
*
* @param FilePath 文件的路径名:例如:"F:/l"
* @throws ClassNotFoundException
*
*/
public static void importXml(String filePath){
System.out.println("============开始导入============");
// -------------jdbc代码
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@201.200.200.254:1521:xe";
String user = "sspa";
String password = "sspa";
Connection con = Connection(url, user, password);
//打开事物
con.setAutoCommit(false);
//SQL执行语句
String exeSql="";
//插入值
String insertValue="";
//插入的列名
String insertColumName="";
//更新的SQL语句
dom4j读取xml String updateSQL="";
//SQL操作语句(用来判断数据库里就没有记录等)
String optionSql="";
//当前记录的ID值
String rowID="";
//ID的列名
String idName="";
int flag=0;
//------------读取XML文件,获得document对象.
SAXReader reader = new SAXReader();
reader.setEncoding("GBK");
Document document=null;
document = ad(new File(filePath));
//-----------获取文档的根节点.
Element root= RootElement();
//遍历所有table节点
for(Iterator rootIter = root.elementIterator("Table"); rootIter.hasNext();){
Element tableNode = (Element) ();
// 得到table节点的Name属性值,用来判断属于哪一个数据库表
String tableName=tableNode.attributeValue("Name");
//打印数据库表名
System.out.println("数据库表名"+tableName);
//取得table节点下的所有子节点,并且遍历
for(Iterator tableIter = tableNode.elementIterator(); tableIter.hasNext();){
Element row = (Element) ();
//得到每一条记录里面的数据
for(Iterator rowIter = row.elementIterator(); rowIter.hasNext();){
flag++;
Element col = (Element) ();
if (flag==1) {
Text();
Name();
}
//得到当前节点的名字,用来判断属于数据库中的哪一列
String Name();
//得到该节点的字段类型
String columType=col.attributeValue("type");
//得到当前节点的值,用来插入数据库中
//列值。默认为空字符
String columValue="";
//判断节点字段的类型,然后转换字段类型
if (columType.equals("date")) {
columValue="to_date(substr('"+Text()+"',1,10),'yyyy-MM-dd')";
}else{
columValue="'"+Text()+"'";
// System.out.println(columType);
}
//判断是否为最后一个,如果是则不加','号
if (rowIter.hasNext()) {
insertValue+=columValue+",";
insertColumName+=columName+",";
}else{
insertValue+=columValue;
insertColumName+=columName;
}
//判断是否为最后一个,如果是则不加','号
if (rowIter.hasNext()) {
updateSQL+=columName+"="+columValue+",";
}else{
updateSQL+=columName+"="+columValue;
}
}
optionSql="select * from "+tableName+" where "+idName+"='"+rowID+"'";
PreparedStatement optionps = con.prepareStatement(optionSql);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论