问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

一个web版的xml文件,怎么将xml文件的内容转存到oracle数据库中,语言是C#,在线等,跪求!!!

发布网友 发布时间:2022-04-10 15:37

我来回答

3个回答

懂视网 时间:2022-04-10 19:59

jaxen-1.1.1.jar(使用dom4j解析XML时,要快速获取某个节点的数据,使用XPath是个不错的方法)

ojdbc6.jar(和数据库打交道)

 

jar包可以直接在maven官网中下载,方便快捷。

 导入到数据库的xml文件的格式为:技术分享图片

技术分享图片

 

一:DbUtil类:

package com.wj;

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


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:@10.10.54.44:15211:credit";
  String username = "creditxf"; //连接数据库的用户名
  String password = "credit"; //连接数据库的密码
  conn = DriverManager.getConnection(url, username, password); //进行连接
 } catch (ClassNotFoundException e) {
  
  e.printStackTrace();
 } catch (Exception e) {
  
  e.printStackTrace();
 }
 return conn;
 
 }

 public static void close(PreparedStatement pstmt, Connection conn) {
 try{
  if(conn !=null){
  conn.close();
  }
 }catch(Exception e){
 }finally{
  try{
  if(pstmt!=null){
   pstmt.close();
  }
  }catch(Exception e){
  e.printStackTrace();
  }
 }
 
 
 }

}

二:TestXMLImport

package com.wj;
import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
 
public class TestXMLImport {
 
 public static void main(String[] args) throws SQLException {
 // TODO Auto-generated method stub
// 执行插入的SQL语句,
 String sql="insert into TB_SWZJ_AJNSRMD(NSRSBH, XH, NSRMC, PJND) values (?, ?, ?, ?)";
 Connection conn = null;
 PreparedStatement pstmt = null;
 try {
  conn = DbUtil.getConnection();
  pstmt = conn.prepareStatement(sql);
//  读取xml文件存放的路径
  Document doc=new SAXReader().read(new File("D:\JAVADEMO\XML\xml\TB_SWZJ_AJNSRMD_00001.xml"));
//  查找对应的信息,从XMl中找对应的层层关系,我的xml文件中,一开始只是Rows,然后每条数据为Row。
  List itemList= doc.selectNodes("/Rows/Row");
//  遍历
  for(Iterator iter=itemList.iterator();iter.hasNext();){
  Element el=(Element) iter.next();
//  使用Element的elementText属性取值,将值一一取出来,这个没有取xml文件中TRANS_DM_TONG_INSERTDATE字段,是因为我需要
          系统时间作为时间字段,默认时间为sysdate
String NSRSBH=el.elementText("NSRSBH"); String XH=el.elementText("XH"); String NSRMC=el.elementText("NSRMC"); String PJND=el.elementText("PJND"); // 通过pstmt赋值 pstmt.setString(1, NSRSBH); pstmt.setString(2, XH); pstmt.setString(3,NSRMC); pstmt.setString(4, PJND); pstmt.addBatch(); } pstmt.executeBatch(); // 提示 System.out.println("将XML导入数据库成功"); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ // 关闭 DbUtil.close(pstmt,conn); } } }

这样就可以将数据导入到数据库里面了,亲测有效。

技术分享图片

 

下面放出我困惑很久的存储过程(亲测无效,但是我依旧不知道怎么办的) 执行无结果,运行不报错:

CREATE OR REPLACE PROCEDURE addRow(file_path VARCHAR2,log_path VARCHAR2)
 AS
 --//XML解析器
xmlPar XMLPARSER.parser := XMLPARSER.NEWPARSER;
 --//DOM文档对象
 doc xmldom.DOMDocument;
 len integer;
 RowNodes xmldom.DOMNodeList;
 chilNodes xmldom.DOMNodeList;
 tempNode xmldom.DOMNode;
 tempArrMap xmldom.DOMNamedNodeMap;
 --================================
 --以下变量用于获取XML节点的值
 XH varchar2(20);
 NSRSBH varchar2(200);
 NSRMC varchar2(500);
 PJND varchar2(200);
 TRANS_DM_TONG_INSERTDATE TIMESTAMP(6);
 tmp integer;
 --================================
 BEGIN
 xmlPar := xmlparser.newParser;
 xmlparser.setErrorLog( xmlPar, log_path);
 xmlparser.parse(xmlPar, file_path);
 doc := xmlparser.getDocument( xmlPar );
 -- 释放解析器实例
 xmlparser.freeParser(xmlPar);
 -- 获取所有Row元素
 RowNodes := xmldom.getElementsByTagName( doc, ‘Row‘ );
 len := xmldom.getLength( RowNodes );
 --遍历所有Row元素
 FOR i in 0..len-1
 LOOP
 --获取第i个Row
 tempNode := xmldom.item( RowNodes, i );
 --所有属性
 tempArrMap := xmldom.getAttributes(tempNode);
 --获取所有子节点
 chilNodes := xmldom.getChildNodes(tempNode);
 --获取子节点的个数
 tmp := xmldom.GETLENGTH( chilNodes );
 --获取各个子节点的值
 NSRSBH := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 0 )));
 XH := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 1 )));
 NSRMC := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 2 )));
 PJND := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 3 )));
 TRANS_DM_TONG_INSERTDATE := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 4 )));

 --插入数据
 INSERT INTO TB_SWZJ_AJNSRMD VALUES (NSRSBH,XH,NSRMC,PJND,TRANS_DM_TONG_INSERTDATE);
 COMMIT;
 END LOOP;
 -- 释放文档对象
 xmldom.freeDocument(doc);
 EXCEPTION
 WHEN OTHERS THEN
 DBMS_output.PUT_LINE(SQLERRM);
 END addRow;

运行:
call addRow(‘D:/DEMO/ANS.xml‘,‘D:/DEMO/xmllog.txt‘);

有大哥帮小弟解决 这个问题的,小弟感激不尽。

 

工作小结:xml文件导入到oracle

标签:方便   replace   proc   nodevalue   res   文档   led   加载   comm   

热心网友 时间:2022-04-10 17:07

1 读入文件内容,将xxx,xxx,xxx的格式保存到某个字符串变量,
2 用Stringstoken将这些变量转换成数组保存.
3 XML的文件读写一般都用dom4j来实现,用dom4j将数组中的内容按照你所需要的格式生成xml文件,给那个方法调用即可.

DOM4J的一个例子.
import org.dom4j.Attribute;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

热心网友 时间:2022-04-10 18:25

改java吧,C#落伍了追问必须用C# 没办法

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦幻西游我这吸血鬼值多少钱 梦幻西游吸血鬼价格问题,这个吸血鬼能卖多少钱啊?MHB比例100元=500W 给... 诚心求解梦幻西游,我这只吸血鬼能值多少钱?我要个能卖出去的价... 梦幻西游手游,我现在69级,买个79的吸血鬼,可以带吗, 我梦幻西游69J号买了个119级吸血鬼,但是不能摆摊出售,那可以跟别人交易... 梦幻西游手游洗出变异吸血鬼不能摆摊 梦幻西游本人80级 有一只吸血鬼 系统不给摆摊 请问能否交易 和平精英 和平精英封号了能注销掉吗? 梦见想蛇一样的东西掉进下水道 梦见包掉到下水道里 为什么iphone 6用网易云音乐闪退 网易云老是闪退怎么回事 网易云音乐因自身空指针闪退 vans魔术侧标替换条在哪买? 农产品 开普通发票也是3个点吗?不是说农产品免税吗? 免税农产品包含哪些 农产品的免税政策是在什么环节免除什么税种? 请问 农产品自产自销免税,有最高额度限制吗? 免税农产品到底免了什么? 免税农产品是免什么税? 牛羊销售是否免税 免税农产品有哪些?没有发票,要怎么抵扣? 奇门遁甲今年哪里有培训班 谁知道诸葛亮借东风的具体时间(年月日时辰)? 奇门遁甲里丙子年壬辰月辛巳日丙申时为什么是阳遁4局? 怎样确定符头和值使? 符头算法 在奇门遁甲中怎么根据日干支来确定符头的地支呢?比如说癸酉日的符头为己巳,这个巳是怎么确定的 奇门遁甲符头(曱乙)是从哪里来的?有什么作用? 在奇门遁甲中,乙丙丁戊符头肯定是甲,庚辛壬癸的符头有可能是己有可能是甲,如何确定符头是甲还是己? c4d文字倒数怎么渲染 c4d渲染设置 噪器通道找不到 word2003中插入表格和使表格中文字居表格之中的快捷键是什么? C4Dviewpoint renderer在哪 如何在word2013中嵌入excel表格的快捷键 Word表格快捷键快捷键 在电脑上打a的m次方怎么打? 梦网科技股最高价?梦网科技历史股票价格?梦网科技一年涨了多少? 梦网科技这个股怎么样?梦网科技股吧东方财富网股吧?梦网科技2021分红吗? 梦网科技指标分析?梦网科技主力资金?梦网科技股票诊股? 梦网科技股价走势东方财富?梦网科技股票投资分析报告?梦网科技股的最新消息? 最新入党思想报告 白酒是勾兑的还是酿造的 阿卡伊勒全屏大招怎么躲 我想问一下苹果手机,可以全部字带拼音怎么设置? 冒险岛阿卡伊勒BOSS怎么打 冒险岛怎么知道阿卡出碎频技能 求提取冒险岛阿卡伊勒碎屏的动态光效大图 苹果8屏幕碎了,但不影响整体使用,能当吗 我手动打印A3双面,怎么打印完一面就不打了???? 这是什么情况?谢谢大神们了!