java dom4j 将xml文件导入到Oracle中

问题描述

求哥哥姐姐帮忙,我只想把下面那个xml文件成功导入到数据库中代码如下:importjava.io.File;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.Iterator;importorg.dom4j.Document;importorg.dom4j.Element;importorg.dom4j.io.SAXReader;publicclassImportXml{@SuppressWarnings("unchecked")publicstaticvoidimportXml(StringfilePath){System.out.println("============开始导入============");//-------------jdbc代码try{Class.forName("oracle.jdbc.driver.OracleDriver");Stringurl="jdbc:oracle:thin:@172.18.8.22:1521:xlsdb";Stringuser="cdc";Stringpassword="cdc";Connectioncon=DriverManager.getConnection(url,user,password);if(!con.isClosed()){System.out.print("连接成功!n");}//打开事物con.setAutoCommit(false);//SQL执行语句StringexeSql="";//插入值StringinsertValue="";//插入的列名StringinsertColumName="";//更新的SQL语句StringupdateSQL="";//SQL操作语句(用来判断数据库里有没有记录等)StringoptionSql="";//当前记录的ID值StringrowID="";//ID的列名StringidName="";intflag=0;//------------读取XML文件,获得document对象.SAXReaderreader=newSAXReader();reader.setEncoding("GBK");Documentdocument=null;document=reader.read(newFile(filePath));//-----------获取文档的根节点.Elementroot=document.getRootElement();//遍历所有table节点for(IteratorrootIter=root.elementIterator("xls");rootIter.hasNext();){ElementtableNode=(Element)rootIter.next();//得到table节点的Name属性值,用来判断属于哪一个数据库表StringtableName=tableNode.attributeValue("name");//打印数据库表名System.out.println("数据库表名:"+tableName);//取得table节点下的所有子节点,并且遍历for(IteratortableIter=tableNode.elementIterator();tableIter.hasNext();){Elementrow=(Element)tableIter.next();//得到每一条记录里面的数据for(IteratorrowIter=row.elementIterator();rowIter.hasNext();){flag++;Elementcol=(Element)rowIter.next();if(flag==1){rowID=col.getText();idName=col.getName();}//得到当前节点的名字,用来判断属于数据库中的哪一列StringcolumName=col.getName();//得到该节点的字段类型StringcolumType=col.attributeValue("type");//得到当前节点的值,用来插入数据库中//列值。默认为空字符StringcolumValue="";//判断节点字段的类型,然后转换字段类型if(columType.equals("date")){columValue="to_date(substr('"+col.getText()+"',1,10),'yyyy-MM-dd')";}else{columValue="'"+col.getText()+"'";//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+"'";PreparedStatementoptionps=con.prepareStatement(optionSql);ResultSetopRS=optionps.executeQuery();System.out.println(optionSql);//假如数据库里没有记录则插入if(!opRS.next()){exeSql="insertinto"+tableName+"("+insertColumName+")"+"values("+insertValue+")";PreparedStatementps=con.prepareStatement(exeSql);System.out.println("插入");System.out.println(exeSql);ps.execute();opRS.close();optionps.close();ps.close();}else{//假如数据库里有记录则更新exeSql="update"+tableName+"set"+updateSQL+"where"+idName+"="+"'"+rowID+"'";PreparedStatementps=con.prepareStatement(exeSql);System.out.println("更新");System.out.println(exeSql);ps.execute();opRS.close();optionps.close();ps.close();}//插入完一条记录以后清空记录信息exeSql="";insertValue="";insertColumName="";updateSQL="";optionSql="";rowID="";idName="";flag=0;}}con.commit();con.close();System.out.println("============导入完成============");}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}publicstaticvoidmain(String[]args){importXml("D:/xml_data/xls.xml");}}xls.xml:<?xmlversion="1.0"encoding="GB2312"?><xls_dataname="训练伤数据"time="2009-04-1419:48:23"reporter_code="6003001"><xlsname="训练伤"><tablename="xlscard"><recordtype="1"><carecardid></carecardid><name></name><sex></sex><birthdate></birthdate><recruitdate></recruitdate><unit></unit><regionunit></regionunit><unitzone>1</unitzone><identify>2012-2-10</identify><corps>3</corps><injurydate></injurydate><injurysubject></injurysubject><currahee></currahee><desposetype>34010101</desposetype><sendhospital>22</sendhospital><checkindate></checkindate><leavedate>11010100</leavedate><injurypart></injurypart><injurytype></injurytype><diagnose></diagnose><severity>1</severity><back>0</back><absentdays>2012-7-3</absentdays><injuryfactor>2012-7-317:00:00</injuryfactor><remark></remark><reporter>2</reporter><reportertel></reportertel><reportdate></reportdate><carddate></carddate><repeated></repeated><deleted>29</deleted><validcard></validcard><verified>34010101</verified><confirmed>李四</confirmed><reportunit></reportunit><unitclass>2012-7-3</unitclass><age>2012-7-317:11:59</age><injurytypes></injurytypes></record></table></xls></xls_data>

解决方案

解决方案二:
不是说表明找不到吗?怎么是中文的。。。
解决方案三:
引用1楼scmod的回复:

不是说表明找不到吗?怎么是中文的。。。

我也不知道啊。
解决方案四:

解决方案五:
你的节点取错了,要取这个节点!!!!!
解决方案六:
你取得的表名是不对的。

时间: 2024-08-01 17:56:59

java dom4j 将xml文件导入到Oracle中的相关文章

java dom4j解析xml文件代码实例分享_java

解析xml文件有两种方式,一种是利用Dom去解析,这种方式写起代码比较麻烦,对于刚入手的程序员来说比较容易出问题:第二种就是使用Dom4j包去解析在要使用Dom4j包的时候,肯定要先引入包 复制代码 代码如下: import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.Writer;import java.util.Iterator; import org.dom4j.Docum

dom4j写xml文件测试

dom4j写xml文件测试:     package com.yanek.demo.xml.test; import java.io.File;import java.io.FileWriter; import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.XMLWriter; public class DOM4j {  public static v

java-关于使用dom4j处理xml文件报错

问题描述 关于使用dom4j处理xml文件报错 相同的代码,在JAVA工程里可以运行 然而我在android工程中调用的时候,却出现了问题!,程序在第一步URL url = new URL("http://api.map.baidu.com/telematics/v3/weather?location=%E9%95%87%E6%B1%9F&ak=4Xyifj6ty3WCLeLIgANbGR0N");好像就失败了,似乎无法打开....求大神告诉一下怎么解决 解决方案 实例037

dom4j解析xml文件实例

dom4j解析xml文件实例     package com.yanek.demo.xml.test; import java.io.File;import java.util.List; import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader; public class Dm4jReadXml {  /**  * @pa

java读取解析xml文件实例_java

读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件转换为 dom树形结构,通过节点进行遍历. 这是W3c关于节点的概念 如果xml中包含有大量的数据,由于dom一次性把xml装入内存中的特性,所以dom不适合于包含大量数据的xml解析.当包含有大量xml的时候,用SAX进行解析比较节省内存. 下面是一个运用DOM进行解析xml文件的例子: xml文件结构如下: <?xm

【dom4j xml】使用dom4j处理XML文件--测试过程遇到的问题

 首先 关于dom4j的API,有如下: 当然  其中的实体引用有以下: 测试使用环境: 使用Maven搭建web环境,pom.xml文件配置如下: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/P

如何将 XML 文件导入 SQL Server 2000?

server|xml 导入 XML" target=_blank>XML 文件(Microsoft SQL Server 开发组供稿,questions@sqlmag.com) 问:如何将 XML" target=_blank>XML 文件导入 SQL Server 2000? 答:您可以用三种方发将 XML" target=_blank>XML 文件导入 SQL Server 2000.下面介绍这几种方法. 如果您想将文档的实体和属性提取到相关表中,那么将

XML文件导入SQL Server 2000

server|xml 问:怎样才能将XML文件导入SQL Server 2000? 答:将XML文件导入SQL Server有若干种方法,这里提供其中的3种: 大容量装载COM接口.如果需要将文档的实体和属性析取到关系表中,最快的方法就是使用SQL Server 2000 Extensible Markup Language 3.0 Service Pack 1(SQLXML 3.0 SP1)提供的大容量装载COM接口.大容量状态COM接口包含在SQLXML 3.0 SP1的免费下载中. tex

dom4j向xml文件中增加数据后缺少结尾标签

问题描述 dom4j向xml文件中增加数据后缺少结尾标签 public boolean insertStudent(Student student) { boolean flag=false; SAXReader saxReader=new SAXReader(); try { Document doc=saxReader.read(new File("dbstudent.xml")); Element rootEle=doc.getRootElement(); Element sno