Oracle使用PLSQL来处理XML 您所在的位置:网站首页 plsql中文乱码解决 Oracle使用PLSQL来处理XML

Oracle使用PLSQL来处理XML

2023-06-13 17:02| 来源: 网络整理| 查看: 265

1、概述

在oracle8i以及后期的版本中,开始提供了xmldom方式来实现对XML格式数据的处理,但在实际的业务信息系统应用开发中,更多的都习惯在程序中(如java,.net等开发语言提供的xml组件)来解析XML数据,很少直接在ORACLE数据库中来直接解析XML数据。

2、处理过程

XML数据可以为字符串(适合处理较小的xml数据)、物理文件或CLOB字段(处理较大的xml数据字段);以如下的XML数据为例来描述该解析处理过程。

XML数据格式示例如下:

单位名称 JXDL 年新增归档数 330 (1)定义解析的XML规则

定义或确定要解析的XML规则,如上。

(2)创建XML解析器

创建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; (5)获取xml数据

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

select datastring into xmlClobData from p_xml_datainfo t where …… ; (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, 'unit' ); lenUnit := xmldom.getLength( unitNodes ); --遍历所有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 ); 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);


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有