VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

DBMS_XMLPARSER

功能描述

dbms_xmlparser包用于构造一个解析xml文档的解析器,并提供一系列接口对解析树的结构和内容进行操作和访问。dbms_xmlparser构造的解析树可以被DOM API访问。该内置包包含以下模块:

函数 描述
NEWPARSER 创建解析器。
GETDOCUMENT 返回解析器构建的DOM树文档的文档节点,只有文档被解析之后才能调用此函数。
PARSEBUFFER 解析存储在指定缓冲区中的xml并存储到解析器中。
PARSECLOB 解析指定clob中的xml并存储到解析器中。
SETBASEDIR 设置解析相对路径的文件的目录。
PARSE 根据给定的文件名进行解析,返回一个DOM文档或将解析结果保存在解析器中。
FREEPARSER 释放解析器。

注意事项

  • 该功能仅在数据库兼容模式为Oracle时支持(即数据库实例初始化时指定DBCOMPATIBILITY='A')。

  • dbms_xmlparser支持同义词xmlparser,即调用内置函数时,内置包名称dbms_xmlparser可用xmlparser替换。

  • 系统已经安装python3。python3安装方法请参见python3环境配置

  • 系统已经创建plpython3u插件,需设置环境变量PYTHONHOME,包括以下内容(重启数据库生效):

    • PYTHONHOME:python3安装路径。

    • LD_LIBRARY_PATH:python3安装路径下的lib目录。

    • PATH:python3安装路径bin目录。

    使用如下命令创建插件:

    CREATE EXTENSION plpython3u;
    

示例

1、创建plpython3u插件(需设置环境变量PYTHONHOME)。

create extension plpython3u;

2、用解析器把XML解析到指定的CLOB对象之中。

SET SERVEROUTPUT ON;
DECLARE
var clob;
parser DBMS_XMLPARSER.parser;
BEGIN
var := '<?xml version="1.0"?>
<EMPSET>
<!--comment-->
<![CDATA[cdata]]>
<test>testtext</test>
<EMP num1="1" num2="2">
<EMP_NO>7782</EMP_NO>
<ENAME>CLARK</ENAME> 
</EMP>
<EMP num="2"> 
<EMP_NO>7839</EMP_NO>
<ENAME>KING</ENAME>
</EMP>
<EMP num="3"> 
<EMP_NO>7934</EMP_NO>
<ENAME>MILLER</ENAME>
</EMP>
</EMPSET>';
parser := DBMS_XMLPARSER.newParser;
DBMS_XMLPARSER.parseClob(parser,var);
END;
/

返回结果为:

ANONYMOUS BLOCK EXECUTE

子程序

NEWPARSER

语法格式

FUNCTION newParser 
RETURN Parser; 

GETDOCUMENT

语法格式

FUNCTION GETDOCUMENT(
  p Parser)
RETURN DOMDocument; 

参数说明

p

解析器实例。

PARSEBUFFER

语法格式

PROCEDURE PARSEBUFFER(
  p   Parser,
doc VARCHAR2); 

参数说明

  • p

    解析器实例。

  • doc

    要解析的XML文档缓冲区。

PARSECLOB

语法格式

PROCEDURE PARSECLOB(
  p   Parser,
doc CLOB);  

参数说明

  • p

    解析器实例。

  • doc

    要解析的XML文档缓冲区。

SETBASEDIR

语法格式

PROCEDURE SETBASEDIR(
  p Parser,
  dir VARCHAR2); 

参数说明

  • p

    解析器实例。

  • doc

    在解析器中设置为解析文件的目录,为directory对象名称。

PARSE

语法格式

FUNCTION PARSE(
  url VARCHAR2)
RETURN DOMDocument; 

PROCEDURE PARSE(
  p Parser,
  url VARCHAR2); 

参数说明

  • p

    解析器实例。

  • url

    要解析的xml文件名或文件的完整路径。

FREEPARSER

语法格式

PROCEDURE FREEPARSER(
  p Parser; 

参数说明

p

解析器实例。