Oracle Jdeveloper 上传XML文件到动态数据表中

本文介绍了如何使用Oracle Jdeveloper将XML文件上传到动态数据表中,涉及新建Fusion Web Application、创建JSXP页面、编写后台bean解析XML并更新数据,以及设置控件属性确保自动提交。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建所需数据

CREATE TABLE "TEST"
  (
    "ID"   NUMBER NOT NULL ENABLE,
    "NAME" VARCHAR2(50 BYTE) NOT NULL ENABLE,
    "AGE"  NUMBER NOT NULL ENABLE,
    "DEPT" VARCHAR2(50 BYTE) NOT NULL ENABLE,
    CONSTRAINT "TEST_PK" PRIMARY KEY ("ID") ENABLE
  )


 

要导入到数据库中的XML文件

<?xml version="1.0" encoding="UTF-8" ?>
<list>
  <persons>
    <id>001</id>
    <name>张三</name>
    <age>34</age>
    <dept>销售部</dept>
  </persons>
  <persons>
    <id>002</id>
    <name>李四</name>
    <age>25</age>
    <dept>销售部</dept>
  </persons>
  <persons>
    <id>003</id>
    <name>小明</name>
    <age>30</age>
    <dept>销售部</dept>
  </persons>
</list>

二、新建fusion web application-->ImpXML

 

基于test表建立VO对象 由于我们这里是要导入数据到表中,所以这个VO对象初始应该是没有数据的,因此需要在query中设置

where 1==0 查询条件,使初始行集为空。如下图:

 

三、新建jspx页-->test.jspx

拖动Input File、Panel Collection控件到页面上,拖动TestView1数据控件到Panel Collection控件里面。现在你的

test.jspx看起来应该是这样

 

四、编写后台bean响应Inpu File控件的ValueChangeListener

这个bean主要由两个函数组成。

public void getFile(ValueChangeEvent valueChangeEvent)

这个函数通过调用第二个函数

private void parseFile(InputStream file)

对xml文件进行解析后,对TestView1中的行集进行赋值。

这两个函数需要注意以下几点:

1、IOUtils.copy(file.getInputStream(), writer, "UTF-8")
这句要注意后面的编码方式要与XML文件的编码方式相对应,否则,解析出来的有可能是乱码。

 

2、JXDocumentBuilderFactory factory =
                (JXDocumentBuilderFactory)JXDocumentBuilderFactory.newInstance

("oracle.xml.jaxp.JXDocumentBuilderFactory",   ClassLoader.getSystemClassLoader());                                                               

由于我们主要利用oracle.xml.parser.v2、oracle.xml.jaxp两个库对XML文件进行解析,在这一步建立XML factory的时候,

由于在weblogic lib中也有这样的方法,为了避免冲突,可以采用全限定名称oracle.xml.jaxp.JXDocumentBuilderFactory,

或在weblogic.xml文件中指定库调用优先级的方式限定使用oracle库。这里采用的第一种方式。

 

3、赋值的时候要注意列名的大小写

五、设置控件属性

设置table控件的PartialTriggers为InputFile控件,Input File控件AutoSubmit属性为true

运行test.jspx,当我们选定xml文件后,它应该自动出现在下面的表里。如下图:

 

示例源代码下载

ImpXML.zip


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值