oracle解析xml文本,Oracle存储过程解析XML

CREATE OR REPLACE

PROCEDURE P_AddPartPopedom(partPopedom_xml in clob)

as

------------------=================该存储过程负责存储角色权限================---------------------

--//XML解析器

xmlPar XMLPARSER.parser := XMLPARSER.NEWPARSER;

--//DOM文档对象

doc xmldom.DOMDocument;

len Integer;

personNodes xmldom.DOMNodeList;

chilNodes xmldom.DOMNodeList;

tempNode xmldom.DOMNode;

tempArrMap xmldom.DOMNamedNodeMap;

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

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

partNum varchar2(50); --角色编号

menuNum varchar2(50); --菜单编号

operateNum varchar2(50); --操作编号

tmp Integer;

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

BEGIN

xmlPar := xmlparser.newParser;

xmlparser.parseClob(xmlPar,partPopedom_xml);

doc := xmlparser.getDocument(xmlPar);

-- 释放解析器实例

xmlparser.freeParser(xmlPar);

personNodes := xmldom.getElementsByTagName_r(doc, 'PARTPOPEDOM');

len := xmldom.getLength( personNodes );

--遍历所有PERSON元素

FOR i in 0..len-1

LOOP

--获取第i个

tempNode := xmldom.item(personNodes, i);

--所有属性

tempArrMap := xmldom.getAttributes(tempNode);

--获取PERSONID的值

--pid := xmldom.getNodeValue(xmldom.getNamedItem(tempArrMap,'POPEDOM'));

--获取子元素的值

chilNodes := xmldom.getChildNodes(tempNode);

tmp := xmldom.GETLENGTH(chilNodes);

partNum := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(chilNodes, 0)));

menuNum := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(chilNodes, 1)));

operateNum := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(chilNodes, 2)));

--插入数据

INSERT INTO SD_SYS_PARTPOPEDOM VALUES (SEQ_SDSYSPARTPOPEDOM.nextval, partNum, menuNum, operateNum);

COMMIT;

END LOOP;

-- 释放文档对象

xmldom.freeDocument(doc);

EXCEPTION

WHEN OTHERS THEN

DBMS_output.PUT_LINE(SQLERRM);

END P_AddPartPopedom;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值