oracle log.xml分析,ORACLE 解析xml字符串-转载的

1.xml字符串

/*

1

857544544

54

2

858544544

63

3

454854555

781

*/

2.oracle存储过程

CREATE OR REPLACE PROCEDURE p_xmlparse (p_xml   IN     CLOB,

r_cur      OUT SYS_REFCURSOR)

AS

/***

xml格式<?xml version="1.0" encoding="utf-8"?>

value0

value1

value2

***/

-- xml解析器

xmlpar          xmlparser.parser := xmlparser.newparser;

-- dom文档对象

doc             xmldom.domdocument;

materialnodes   xmldom.domnodelist;

materialid      VARCHAR2 (50);

chilnodes       xmldom.domnodelist;

tempnode        xmldom.domnode;

temparrmap      xmldom.domnamednodemap;

-- 以下变量用于获取xml节点的值

v_attribute     VARCHAR2 (50);

v_value         VARCHAR2 (50);

tmp             INTEGER;

l_sql           VARCHAR2 (32767) := ‘select ‘;

BEGIN

xmlparser.parseclob (xmlpar, p_xml);

doc := xmlparser.getdocument (xmlpar);

-- 释放解析器实例

xmlparser.freeparser (xmlpar);

materialnodes := xmldom.getelementsbytagname (doc, ‘material‘);

tempnode := xmldom.item (materialnodes, 0);

-- 获取根元素的ID属性值

materialid := xmldom.getattribute (xmldom.getdocumentelement (doc), ‘id‘);

-- 所有属性

temparrmap := xmldom.getattributes (tempnode);

-- 获取子元素的值

chilnodes := xmldom.getchildnodes (tempnode);

tmp := xmldom.getlength (chilnodes);

l_sql := l_sql || materialid || ‘ as materialid‘;

FOR i IN 0 .. tmp - 1

LOOP

v_attribute := xmldom.getnodename (xmldom.item (chilnodes, i));

v_value :=

xmldom.getnodevalue (

xmldom.getfirstchild (xmldom.item (chilnodes, i)));

l_sql := l_sql || ‘,‘‘‘ || v_value || ‘‘‘ as ‘ || v_attribute;

-- dbms_output.put_line(materialid||‘ ‘||v_attribute||‘ ‘||v_value);

END LOOP;

l_sql := l_sql || ‘ from dual‘;

-- DBMS_OUTPUT.put_line (l_sql);

OPEN r_cur FOR l_sql;

-- 释放文档对象

xmldom.freedocument (doc);

EXCEPTION

WHEN OTHERS

THEN

DBMS_OUTPUT.put_line (SQLERRM);

END p_xmlparse;

3.执行结果

L8NffsG0DF2zTgrRGdGsbP5r+n1Mr4LXiU58XUZ7kqz19zbt8Ait6mAQPAJ9GAAWABDRgAFtCAAWABDRgAFtCAAWABDRgAFtCAAWABDRgAFtCAAWABDRgAFtCAAWABDRgAFtCAAWABDRgAFtCAAWABDRgAFtCAAWABDRgAFtCAAWCBr6+vfwBU7Xr1M46BKgAAAABJRU5ErkJggg==

源文档地址:http://blog.csdn.net/wzy0623/article/details/8245062

原文:http://www.cnblogs.com/iyoume2008/p/4783101.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值