您的位置:首页 > 数据库 > Oracle

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

2012-03-10 22:01 337 查看

一、创建所需数据

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: