oracle xml文件是什么文件,ORACLE 读取XML文件

DECLARE

--:定义或肯定要解析的XML规则,如上。

--步骤2:建立XML解析器实例XMLPARSER.parser,以下:

xmlpar xmlparser.parser := xmlparser.newparser;

--步骤3:定义DOM文档对象,以下:

doc xmldom.domdocument;

--步骤4:定义解析XML所须要的其余对象,以下:

lenunit       INTEGER;

lenitem       INTEGER;

unitnodes     xmldom.domnodelist;

itemnodes     xmldom.domnodelist;

chilnodes     xmldom.domnodelist;

tempnode_unit xmldom.domnode;

tempnode      xmldom.domnode;

temparrmap    xmldom.domnamednodemap;

--================================

--如下变量用于获取XML节点的值

NAME  VARCHAR2(50);

VALUE VARCHAR2(20);

tmp   INTEGER;

--================================

xmlclobdata CLOB;

BEGIN

--步骤5:获取xml数据,如下假设从数据表的clob字段中获取取,以下:

BEGIN

xmlclobdata := '<?xml version="1.0" encoding="GBK" ?>

单位名称

JXDL

年新增归档数

330

';

%****

' <?xml version="1.0" encoding="GBK" ?>

2001116

1000

65000.0

9591503

2018-09-26T14:51:22.0Z

640001391210002018

';

**%

--步骤6:解析xml数据,以下

xmlpar := xmlparser.newparser;

--xmlparser.parseBuffer(xmlPar,xmlString);--

xmlparser.parseclob(xmlpar, xmlclobdata);

doc := xmlparser.getdocument(xmlpar);

-- 释放解析器实例

xmlparser.freeparser(xmlpar);

-- 获取全部unit元素

unitnodes := xmldom.getelementsbytagname(doc, 'parameters');

lenunit := xmldom.getlength(unitnodes);

dbms_output.put_line(lenunit);

--遍历全部unit元素

FOR i IN 0 .. lenunit - 1 LOOP

--获取第i个unit

tempnode_unit := xmldom.item(unitnodes, i);

itemnodes := xmldom.getchildnodes(tempnode_unit);

lenitem := xmldom.getlength(itemnodes);

dbms_output.put_line(lenitem);

FOR j IN 0 .. lenitem - 1 LOOP

tempnode := xmldom.item(itemnodes, j);

--获取子元素的值

chilnodes := xmldom.getchildnodes(tempnode);

tmp := xmldom.getlength(chilnodes);

NAME := xmldom.getnodevalue(xmldom.getfirstchild(xmldom.item(chilnodes,

0)));

VALUE := xmldom.getnodevalue(xmldom.getfirstchild(xmldom.item(chilnodes,

1)));

dbms_output.put_line(i || j || NAME || VALUE);

END LOOP;

END LOOP;

--步骤7:释放文档对象

xmldom.freedocument(doc);

--步骤8:异常与错误处理

EXCEPTION

WHEN OTHERS THEN

dbms_output.put_line(SQLERRM);

END;

END;

node

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值