DBMS_XMLDOM包

说明:

DBMS_XMLDOM包兼容了oracle中DBMS_XMLDOM包中的部分接口。用于从xml文档中获取信息。

常量

DBMS_XMLDOM 软件包定义了几个常量,可用于指定参数值。下表列出了这些常量。

常量名 数据类型名称 描述
ELEMENT_NODE PLS_INTEGER 1 节点是一个元素
ATTRIBUTE_NODE PLS_INTEGER 2 节点是一个属性
TEXT_NODE PLS_INTEGER 3 节点是一个文本节点
CDATA_SECTION_NODE PLS_INTEGER 4 节点是一个字符数据块节点
ENTITY_REFERENCE_NODE PLS_INTEGER 5 节点是实体引用
ENTITY_NODE PLS_INTEGER 6 节点是一个实体
PROCESSING_INSTRUCTION_NODE PLS_INTEGER 7 节点是处理指令
COMMENT_NODE PLS_INTEGER 8 节点是一个注释
DOCUMENT_NODE PLS_INTEGER 9 节点是一个文档
DOCUMENT_TYPE_NODE PLS_INTEGER 10 节点是文档类型定义
DOCUMENT_FRAGMENT_NODE PLS_INTEGER 11 节点是一个文档片段
NOTATION_NODE PLS_INTEGER 12 节点是一种表示法

类型

下面的表中列出了oracle包 DBMS_XMLDOM 中的类型:

类型 描述
DOMATTR 实现 DOM 属性接口
DOMCDATASECTION 实现 DOM 字符数据块接口
DOMCHARACTERDATA 实现 DOM 字符数据接口
DOMCOMMENT 实现 DOM 注释接口
DOMDOCUMENT 实现 DOM 文档接口
DOMDOCUMENTFRAGMENT 实现 DOM 文档片段接口
DOMDOCUMENTTYPE 实现 DOM 文档类型接口
DOMELEMENT 实现 DOM 元素接口
DOMENTITY 实现 DOM 实体接口
DOMENTITYREFERENCE 实现 DOM 实体引用接口
DOMIMPLEMENTATION 实现 DOM 实现接口
DOMNAMEDNODEMAP 实现 DOM 命名节点映射接口
DOMNODE 实现 DOM 节点接口
DOMNODELIST 实现 DOM 节点列表接口
DOMNOTATION 实现 DOM 表示法接口
DOMPROCESSINGINSTRUCTION 实现 DOM 处理指令接口
DOMTEXT 实现 DOM 文本接口

DOMNode 子程序

本表列出并简要说明了 DBMS_XMLDOM 的 DOMNode 子程序

子程序 描述
APPENDCHILD函数 将节点newchild添加到此节点的子节点列表末尾,并返回 新添加的节点。如果newchild节点已在树中,则首先将其移除
CLONENODE函数 节点的通用复制构造函数。复制节点没有父节点,父节点为NULL
FREENODE存储过程 释放与节点相关的所有资源
GETATTRIBUTES函数 检索包含此节点(元素)属性的NAMEDNODEMAP,否则为NULL
GETCHILDNODES函数 检索包此节点包含的所有子节点的 DOMNODELIST
GETFIRSTCHILD函数 检索此节点的第一个子节点,如果没有该节点,则返回 NULL
GETLOCALNAME存储过程 读取节点限定名称的本地部分,不包含命名空间前缀
GETNODENAME函数 根据节点的类型获取节点的名称
GETNODETYPE函数 检索节点的类型
GETNODEVALUE函数 根据节点的类型获取节点的值
GETOWNERDOCUMENT函数 检索与此节点相关联的 Document 对象
HASCHILDNODES函数 用于确定此节点是否有任何子节点
IMPORTNODE函数 从外部文档导入一个节点,并返回这个新节点
INSERTBEFORE函数 将节点newchild插入现有子节点refchild之前 如果refchild为空,则将newchild插入子节点列表的末尾
ISNULL函数 测试节点是否为NULL
MAKECHARACTERDATA函数 将指定的DOMNODE转换为DOMCHARACTERDATA
MAKEDOCUMENT函数 将指定的DOMNODE转换为DOMDOCUMENT
MAKEELEMENT函数 将指定的DOMNODE转换为DOMELEMENT
REMOVECHILD函数 从子节点列表中删除oldchild所指的子节点,并返回该子节点
WRITETOBUFFER存储过程 使用数据库字符集将 XML 节点写入指定的缓冲区
WRITETOCLOB存储过程 使用数据库字符集将 XML 节点写入指定的 CLOB

DOMCharacterData 子程序

本表列出并简要说明了 DBMS_XMLDOM 的 DOMCharacterData 子程序

子程序 描述
GETLENGTH函数 获取数据中的字符数。该值可能为零,因为 CharacterData 节点可能为空
MAKENODE函数 将指定的DOMCHARACTERDATA转换为DOMNODE,并返回该DOMNODE

DOMDocument 子程序

本表列出并简要说明了 DBMS_XMLDOM 的 DOMDocument 子程序

子程序 描述
CREATEELEMENT函数 用于创建一个DOMELEMENT节点
CREATETEXTNODE函数 用于创建DOMTEXT节点
FREEDOCUMENT存储过程 释放DOMDOCUMENT对象
GETDOCUMENTELEMENT函数 返回DOMDOCUMENT的根元素
GETELEMENTSBYTAGNAME函数 返回具有指定标签名称的所有元素的DOMNODELIST
GETVERSION函数 此函数返回DOMDOCUMENT的版本
ISNULL函数 检查指定的DOMDOCUMENT是否为NULL;如果NULL,则返回TRUE
MAKENODE函数 将DOMDOCUMENT转换为DOMNODE,并返回该DOMNODE
NEWDOMDOCUMENT函数 返回一个新的DOMDOCUMENT实例
SETVERSION存储过程 设置DOMDOCUMENT的版本

DOMElement 子程序

本表列出并简要说明了 DBMS_XMLDOM 的 DOMElement 子程序

子程序 描述
GETATTRIBUTE函数 按名称返回DOMELEMENT属性的值
GETCHILDRENBYTAGNAME函数 返回给定标记名的DOMELEMENT的子代
GETELEMENTSBYTAGNAME函数 返回给定标记名的DOMELEMENT的子元素
GETTAGNAME函数 此函数返回DOMELEMENT的名称
MAKENODE函数 将指定的DOMELEMENT转换为DOMNODE,并返回DOMNODE
SETATTRIBUTE存储过程 按名称设置 DOMELEMENT 的属性值

DOMNamedNodeMap 子程序

本表列出并简要说明了 DBMS_XMLDOM 的 DOMNamedNodeMap 子程序

子程序 描述
ISNULL函数 检查指定的DOMNAMEDNODEMAP是否为空;如果为空,则返回TRUE
ITEM函数 返回映射中与 INDEX 参数相对应的项目
GETLENGTH函数 获取此映射中的节点数

DOMNodeList 子程序

本表列出并简要说明了 DBMS_XMLDOM 的 DOMNodeList 子程序

子程序 描述
GETLENGTH函数 获取DOMNodeList中的节点数
ITEM函数 返回集合中与INDEX参数相对应的项目

DOMText 子程序

本表列出并简要说明了 DBMS_XMLDOM 的 DOMText 子程序

子程序 描述
MAKENODE函数 将DOMTEXT转换为DOMNODE,并返回DOMNODE

DBMS_XMLDOM 子程序汇总

下面详细列出目前支持的 DBMS_XMLDOM 的所有子程序,并简要介绍它们。

1. APPENDCHILD 函数

此函数将节点 newchild 添加到此节点的子节点列表末尾,并返回新添加的节点。如果 newchild 节点已在树中,则首先将其移除。

语法

DBMS_XMLDOM.APPENDCHILD(
    n          IN    DOMNode,
    newchild   IN    DOMNode)
RETURN DOMNODE;

参数

参数 描述
n DOMNode
newchild 要添加到节点n的子节点列表中的子节点

2. CLONENODE 函数

此函数返回此节点的副本,作为节点的通用复制构造函数。复制节点没有父节点,其父节点为 NULL。

语法

DBMS_XMLDOM.CLONENODE(
    n       IN    DOMNODE,
    deep    IN    BOOLEAN)
RETURN DOMNODE;

参数

参数 描述
n DOMNode
deep 是否克隆子代

3. CREATEELEMENT 函数

该函数创建一个 DOMELEMENT。

语法

DBMS_XMLDOM.CREATEELEMENT(
    doc        IN      DOMDOCUMENT,
    tagName    IN      VARCHAR2)
RETURN DOMELEMENT;

参数

参数 描述
doc DOMDOCUMENT
tagName 新的DOMELEMENT节点的Tagname

4. CREATETEXTNODE 函数

此函数创建一个 DOMTEXT 节点。

语法

DBMS_XMLDOM.CREATETEXTNODE(
    doc      IN     DOMDocument,
    data     IN     VARCHAR2)
RETURN DOMTEXT;

参数

参数 描述
doc DOMDOCUMENT
data DOMText 节点的内容

5. FREEDOCUMENT 存储过程

此过程释放 DOMDOCUMENT 对象。

语法

DBMS_XMLDOM.FREEDOCUMENT(
    doc     IN     DOMDOCUMENT);

参数

参数 描述
doc DOMDOCUMENT

6. FREENODE 存储过程

该程序释放与 DOMNODE 相关的所有资源。

语法

DBMS_XMLDOM.FREENODE(
    n      IN     DOMNODE);

参数

参数 描述
doc DOMDOCUMENT

7. GETATTRIBUTE 函数

此函数按名称返回 DOMELEMENT 的属性值。

语法

DBMS_XMLDOM.GETATTRIBUTE(
    elem       IN      DOMELEMENT,
    name       IN      VARCHAR2)
RETURN VARCHAR2;

参数

参数 描述
elem DOMELEMENT
name 属性名称

8. GETATTRIBUTES 函数

此函数检索包含此节点属性(如果是元素)的 NAMEDNODEMAP,否则为 NULL。

语法

DBMS_XMLDOM.GETATTRIBUTES(
    n      IN      DOMNode)
RETURN DOMNAMEDNODEMAP;

参数

参数 描述
n DOMNODE

9. GETCHILDNODES 函数

此函数将检索包含此节点所有子节点的 DOMNODELIST。如果没有子节点,则是一个不包含节点的 DOMNODELIST。

语法

DBMS_XMLDOM.GETCHILDNODES(
    n      IN    DOMNode)
RETURN DOMNodeList;

参数

参数 描述
n DOMNODE

10. GETCHILDRENBYTAGNAME 函数

返回给定标记名的 DOMELEMENT 的子代

语法

DBMS_XMLDOM.GETCHILDRENBYTAGNAME(
    elem      IN      DOMElement,
    name      IN      VARCHAR2)
RETURN DOMNODELIST;

参数

参数 描述
elem DOMELEMENT
name 标记名称

11. GETDOCUMENTELEMENT 函数

此函数返回 DOMDOCUMENT 的根元素。

语法

DBMS_XMLDOM.GETDOCUMENTELEMENT(
    doc      IN      DOMDOCUMENT)
RETURN DOMELEMENT;

参数

参数 描述
doc DOMDOCUMENT

12. GETELEMENTSBYTAGNAME 函数

注意

该函数已被重载。具体的功能形式将与语法声明一起说明。

语法

12.1 返回具有指定标签名称的所有元素的 DOMNODELIST(DOMDocument 子程序):

DBMS_XMLDOM.GETELEMENTSBYTAGNAME(
    doc         IN      DOMDOCUMENT,
    tagname     IN      VARCHAR2)
RETURN DOMNODELIST;

12.2 返回给定标记名的 DOMELEMENT 的元素子代(DOMElement 子程序):

DBMS_XMLDOM.GETELEMENTSBYTAGNAME(
    elem      IN     DOMELEMENT,
    name      IN     VARCHAR2)
RETURN DOMNODELIST;

参数

参数 描述
doc DOMDOCUMENT
tagname 要匹配的标签名称
elem DOMELEMENT
name 要匹配的标签名称

13. GETFIRSTCHILD 函数

此函数检索此节点的第一个子节点。如果没有该节点,则返回 NULL。

语法

DBMS_XMLDOM.GETFIRSTCHILD(
    n      IN      DOMNODE)
RETURN DOMNODE;

参数

参数 描述
n DOMNODE

14. GETLENGTH 函数

注意

该函数已被重载。具体的功能形式将与语法声明一起说明。

语法

14.1 获取数据中的字符数。该值可能为零,因为 CharacterData 节点可能为空(DOMCharacterData 子程序)

DBMS_XMLDOM.GETLENGTH(
    cd     IN     DOMCHARACTERDATA)
RETURN NUMBER;

14.2 获取DOMNamedNodeMap中的节点数(DOMNamedNodeMap 子程序)

DBMS_XMLDOM.GETLENGTH(
    nnm      IN     DOMNAMEDNODEMAP)
RETURN NUMBER;

14.3 获取DOMNODELIST中的节点数(DOMNodeList 子程序)

DBMS_XMLDOM.GETLENGTH(
    nl     IN    DOMNODELIST)
RETURN NUMBER;

参数

参数 描述
cd DOMCHARACTERDATA
nnm DOMNAMEDNODEMAP
nl DOMNODELIST

15. GETLOCALNAME 存储过程

读取节点限定名称的本地部分,不包含命名空间前缀

语法

DBMS_XMLDOM.GETLOCALNAME(
    n       IN     DOMNODE,
    data    OUT    VARCHAR2);

参数

参数 描述
n DOMNODE
data 返回的LOCALNAME

16. GETNODENAME 函数

该函数根据节点的类型获取节点的名称。

语法

DBMS_XMLDOM.GETNODENAME(
    n       IN     DOMNODE)
RETURN VARCHAR2;

参数

参数 描述
n DOMNODE

17. GETNODETYPE 函数

该函数检索节点对象代表的对应类型。

语法

DBMS_XMLDOM.GETNODETYPE(
    n       IN     DOMNODE)
RETURN NUMBER;

参数

参数 描述
n DOMNODE

18. GETNODEVALUE 函数

该函数根据节点的类型获取节点的值。

语法

DBMS_XMLDOM.GETNODEVALUE(
    n       IN     DOMNODE)
RETURN VARCHAR2;

参数

参数 描述
n DOMNODE

19. GETOWNERDOCUMENT 函数

此函数将检索与此节点相关联的 Document 对象。这也是用于创建新节点的 Document 对象。 如果该节点是一个 Document 或 Document Type(尚未与任何 Document 一起使用),则该对象为空。

语法

DBMS_XMLDOM.GETOWNERDOCUMENT(
    n       IN     DOMNODE)
RETURN DOMDOCUMENT;

参数

参数 描述
n DOMNODE

20. GETTAGNAME 函数

此函数返回 DOMELEMENT 的名称。

语法

DBMS_XMLDOM.GETTAGNAME(
    elem       IN     DOMELEMENT)
RETURN VARCHAR2;

参数

参数 描述
n DOMELEMENT

21. GETVERSION 函数

此函数返回 DOMDOCUMENT 的版本。

语法

DBMS_XMLDOM.GETVERSION(
    doc       IN     DOMDOCUMENT)
RETURN VARCHAR2;

参数

参数 描述
doc DOMDOCUMENT

22. HASCHILDNODES 函数

此函数用于确定此节点是否有任何子节点。

语法

DBMS_XMLDOM.HASCHILDNODES(
    n       IN     DOMNODE)
RETURN BOOLEAN;

参数

参数 描述
n DOMNODE

23. IMPORTNODE 函数

此函数从外部文档导入一个节点,并返回这个新节点。

语法

DBMS_XMLDOM.IMPORTNODE(
    doc            IN  DOMDOCUMENT,
    importedNode   IN  DOMNODE,
    deep           IN  BOOLEAN)
RETURN DOMNODE;

参数

参数 描述
doc 导入节点的 DOMDOCUMENT
importedNode 要导入的节点
deep 是否递归导入,如果该值为 "true",节点的整个子树将与节点一起导入。如果该值为 FALSE,则只导入节点本身

24. INSERTBEFORE 函数

此函数将节点 newchild 插入现有子节点 refchild 之前。如果 refchild 为空,则将 newchild 插入子节点列表的末尾。

如果 newchild 是一个 DOCUMENTFRAGMENT 对象,则其所有子节点都会按相同顺序插入到 refchild 之前。如果 newchild 已在树中,则首先将其删除。

语法

DBMS_XMLDOM.INSERTBEFORE(
    n          IN     DOMNODE,
    newchild   IN     DOMNODE,
    refchild   IN     DOMNODE)
RETURN DOMNode;

参数

参数 描述
n DOMNODE
newchild 要插入 DOMNODE 的子节点
refchild 新子节点之前要插入的引用节点

25. ISNULL 函数

注意

该函数已被重载。具体的功能形式将与语法声明一起说明。

语法

25.1 检查指定的 DOMNODE 是否为空。如果是 NULL,则返回 TRUE,否则返回 FALSE(DOMNode 子程序)

DBMS_XMLDOM.ISNULL(
    n        IN     DOMNODE)
RETURN BOOLEAN;

25.2 检查指定的 DOMDOCUMENT 是否为 NULL;如果为 NULL,则返回 TRUE,否则返回 FALSE(DOMDocument 子程序)

DBMS_XMLDOM.ISNULL(
    doc       IN     DOMDOCUMENT)
RETURN BOOLEAN;

25.3 检查指定的 DOMNAMEDNODEMAP 是否为 NULL;如果为 NULL,则返回 TRUE,否则返回 FALSE(DOMNamedNodeMap 子程序)

DBMS_XMLDOM.ISNULL(
    nnm     IN     DOMNAMEDNODEMAP)
RETURN BOOLEAN;

参数

参数 描述
n 要检查的 DOMNODE
doc 要检查的 DOMDOCUMENT
nnm 要检查的 DOMNAMEDNODEMAP

26. ITEM 函数

注意

该函数已被重载。具体的功能形式将与语法声明一起说明。

语法

26.1 返回DOMNamedNodeMap中与 INDEX 参数相对应的项目。如果 INDEX 大于或等于此DOMNamedNodeMap中的节点数,则返回 NULL(DOMNamedNodeMap 子程序)

DBMS_XMLDOM.ITEM(
    nnm       IN     DOMNAMEDNODEMAP,
    index     IN     NUMBER)
RETURN DOMNODE;

26.2 返回集合中与 INDEX 参数相对应的项目。如果索引大于或等于列表中的节点数,则返回 NULL(DOMNodeList 子程序)

DBMS_XMLDOM.ITEM(
    nl       IN     DOMNODELIST,
    index    IN     NUMBER)
RETURN DOMNODE;

参数

参数 描述
nnnm DOMNAMEDNODEMAP
index DOMNAMEDNODEMAP 中要检索项目的索引
nl DOMNODELIST
index 用于检索项目的 NodeList 中的索引

27. MAKECHARACTERDATA 函数

此函数将指定的 DOMNODE 转换为 DOMCHARACTERDATA,并返回 DOMCHARACTERDATA。

语法

DBMS_XMLDOM.MAKECHARACTERDATA(
    n       IN     DOMNode)
RETURN DOMCharacterData;

参数

参数 描述
n 要转换的 DOMNODE

28. MAKEDOCUMENT 函数

此函数将指定的 DOMNODE 转换为 DOMDOCUMENT,并返回 DOMDOCUMENT。

语法

DBMS_XMLDOM.MAKEDOCUMENT(
    n       IN     DOMNODE)
RETURN DOMDocument;

参数

参数 描述
n 要转换的 DOMNODE

29. MAKEELEMENT 函数

语法

此函数将指定的 DOMNODE 转换为 DOMELEMENT,并返回 DOMELEMENT。

DBMS_XMLDOM.MAKEELEMENT(
    n       IN     DOMNODE)
RETURN DOMELEMENT;

参数

参数 描述
n 要转换的 DOMNODE

30. MAKENODE 函数

注意

该函数已被重载。具体的功能形式将与语法声明一起说明。

语法

30.1 将指定的 DOMCHARACTERDATA 转换为 DOMNODE,并返回 DOMNODE(DOMCHARACTERDATA 子程序)

DBMS_XMLDOM.MAKENODE(
    cd       IN     DOMCHARACTERDATA)
RETURN DOMNODE;

30.2 将指定的 DOMDOCUMENT 转换为 DOMNODE,并返回 DOMNODE(DOMDOCUMENT 子程序)

DBMS_XMLDOM.MAKENODE(
    doc      IN     DOMDOCUMENT)
RETURN DOMNODE;

30.3 将指定的 DOMELEMENT 转换为 DOMNODE,并返回 DOMNODE(DOMELEMENT 子程序)

DBMS_XMLDOM.MAKENODE(
    elem       IN     DOMELEMENT)
RETURN DOMNODE;

30.4 将指定的 DOMTEXT 转换为 DOMNODE,并返回 DOMNODE(DOMTEXT 子程序)

DBMS_XMLDOM.MAKENODE(
    t       IN     DOMTEXT)
RETURN DOMNODE;

参数

参数 描述
cd 要转换的 DOMCHARACTERDATA
doc 要转换的 DOMDOCUMENT
elem 要转换的 DOMELEMENT
t 要转换的 DOMTEXT

31. NEWDOMDOCUMENT 函数

此函数返回一个新的 DOMDOCUMENT 实例。

语法

DBMS_XMLDOM.NEWDOMDOCUMENT(
    var IN VARCHAR2)
RETURN DOMDOCUMENT;

参数

参数 描述
var DOMDOCUMENT的内容

32. REMOVECHILD 函数

此函数从子节点列表中删除 oldchild 所指示的子节点,并返回该子节点。

语法

DBMS_XMLDOM.REMOVECHILD(
    n          IN     DOMNode,
    oldchild   IN     DOMNode)
RETURN DOMNODE;

参数

参数 描述
n DOMNode
oldchild 要删除的节点 n 的子节点

33. SETATTRIBUTE 存储过程

此存储过程通过名称设置 DOMELEMENT 的属性值。

语法

DBMS_XMLDOM.SETATTRIBUTE(
    elem       IN  DOMELEMENT,
    name       IN  VARCHAR2,
    newvalue   IN  VARCHAR2);

参数

参数 描述
elem DOMELEMENT
name 属性名称
newvalue 属性值

34. SETNODEVALUE 存储过程

此存储过程根据节点的类型设置节点的值。当节点被定义为 NULL 时,对其进行设置不会产生任何影响。

语法

DBMS_XMLDOM.SETNODEVALUE(
    n         IN     DOMNODE,
    nodeValue IN     VARCHAR2);

参数

参数 描述
n DOMNODE
newvalue 节点要设置的值

35. SETVERSION 存储过程

此过程设置 DOMDOCUMENT 的版本。

语法

DBMS_XMLDOM.SETVERSION(
    doc        IN     DOMDOCUMENT,
    version    IN     VARCHAR2);

参数

参数 描述
doc DOMDOCUMENT
version 要设置的 DOMDOCUMENT 的版本

36. WRITETOBUFFER 存储过程

WRITETOBUFFER 是一个重载存储过程,用于将 XML 节点、XML 文档或文档片段写入指定的缓冲区。

该存储过程是重载的。具体的功能形式将与语法声明一起说明。

语法

使用数据库字符集将 XML 节点写入指定的缓冲区(DOMNode 子程序)

DBMS_XMLDOM.WRITETOBUFFER(
    n        IN      DOMNODE,
    buffer   IN OUT  VARCHAR2);

参数

参数 描述
n DOMNODE
buffer 要写入的缓冲区

37. WRITETOCLOB 存储过程

WRITETOCLOB 是一个重载存储过程,用于将 XML 节点或文档写入指定的 CLOB。

具体的功能形式将与语法声明一并说明。

语法

使用数据库字符集将 XML 节点写入指定的 CLOB(DOMNode 子程序)

DBMS_XMLDOM.WRITETOCLOB(
    n       IN      DOMNODE,
    cl      IN OUT  CLOB);

参数

参数 描述
n DOMNODE
cl 要写入的CLOB