GaussDB-DBE_XMLDOM(上)

40 阅读35分钟

GaussDB-DBE_XMLDOM

接口介绍

高级功能包DBE_XMLDOM用于访问XMLType对象,实现DOM(Document Object Model),用于访问HTML和XML DOCUMENTS API。高级功能包DBE_XMLDOM支持的所有类型请参见表1,DBE_XMLDOM支持的所有接口请参见表2

DBE_XMLDOM高级包在字符集设置为SQL_ASCII的数据库内使用的情况下,输入超出ASCII范围的字符,会导致报错。

类型名称描述
DOMATTR实现DOM Attribute接口。
DOMDOCUMENT实现DOM Document接口。
DOMELEMENT实现DOM Element接口。
DOMNAMEDNODEMAP实现DOM Named Node Map接口。
DOMNODELIST实现DOM Node List接口。
DOMNODE实现DOM Node接口。
DOMTEXT实现DOM Text接口。

接口名称描述
DBE_XMLDOM.APPENDCHILD将newchild node添加到parent(n)节点最后面,并返回新添加的Node节点。
DBE_XMLDOM.CREATEELEMENT创建指定名称的DOMELEMENT对象。
DBE_XMLDOM.CREATETEXTNODE创建DOMTEXT节点。
DBE_XMLDOM.FREEDOCUMENT释放DOMDOCUMENT节点相关资源。
DBE_XMLDOM.FREEELEMENT释放DOMELEMENT节点相关资源。
DBE_XMLDOM.FREENODE释放DOMNODE节点相关资源。
DBE_XMLDOM.FREENODELIST释放DOMNODELIST节点相关资源。
DBE_XMLDOM.GETATTRIBUTE按名称返回DOMELEMENT属性的值。
DBE_XMLDOM.GETATTRIBUTES将DOMNODE节点属性值作为map返回。
DBE_XMLDOM.GETCHILDNODES将节点下的若干子节点转换成节点列表。
DBE_XMLDOM.GETCHILDRENBYTAGNAME按名称返回DOMELEMENT的子节点。
DBE_XMLDOM.GETDOCUMENTELEMENT返回指定DOCUMENT的首个子节点。
DBE_XMLDOM.GETFIRSTCHILD返回第一个子节点。
DBE_XMLDOM.GETLASTCHILD返回最后一个子节点。
DBE_XMLDOM.GETLENGTH获取给定节点中的节点个数。
DBE_XMLDOM.GETLOCALNAME检索节点的本地名称。
DBE_XMLDOM.GETNAMEDITEM检索由名称指定的节点。
DBE_XMLDOM.GETNEXTSIBLING返回该节点的下一个节点。
DBE_XMLDOM.GETNODENAME返回节点名称。
DBE_XMLDOM.GETNODETYPE返回节点类型。
DBE_XMLDOM.GETNODEVALUE此函数用于获取节点的值,具体取决于其类型。
DBE_XMLDOM.GETPARENTNODE检索此节点的父节点。
DBE_XMLDOM.GETTAGNAME返回指定DOMELEMENT的标签名称。
DBE_XMLDOM.HASCHILDNODES检查DOMNODE对象是否拥有任一子节点。
DBE_XMLDOM.IMPORTNODE复制节点并为该节点指定所属文档。
DBE_XMLDOM.ISNULL检测节点是否为空。
DBE_XMLDOM.ITEM返回映射中与索引参数对应的项。
DBE_XMLDOM.MAKEELEMENT将DOMNODE对象转换为DOMELEMENT类型。
DBE_XMLDOM.MAKENODE将节点强制转换为DOMNODE类型。
DBE_XMLDOM.NEWDOMDOCUMENT返回新的DOMDOCUMENT对象。
DBE_XMLDOM.SETATTRIBUTE按名称设置DOMELEMENT属性的值。
DBE_XMLDOM.SETCHARSET设置DOMDOCUMENT的CHATSET字符集。
DBE_XMLDOM.SETDOCTYPE设置DOMDOCUMENT的外部DTD。
DBE_XMLDOM.SETNODEVALUE此函数用于向DOMNODE对象中设置节点的值。
DBE_XMLDOM.WRITETOBUFFER将 XML 节点写入指定缓冲区。
DBE_XMLDOM.WRITETOCLOB将 XML 节点写入指定CLOB。
DBE_XMLDOM.WRITETOFILE将 XML 节点写入指定文件。
DBE_XMLDOM.GETSESSIONTREENUM显示当前session中所有类型的dom树的数量。
DBE_XMLDOM.GETDOCTREESINFO显示document类型的dom树的内存占用、节点数量等统计信息。
DBE_XMLDOM.GETDETAILDOCTREEINFO显示特定的document变量的各类型节点数量。
DBE_XMLDOM.GETELEMENTSB....返回匹配TAGNAME的DOMNODELIST节点列表。
  • DBE_XMLDOM.APPENDCHILD

    将newchild node添加到parent(n)节点最后面,并返回新添加的Node节点。DBE_XMLDOM.APPENDCHILD函数原型为:

    | ``` DBE_XMLDOM.APPENDCHILD( n IN DOMNode, newchild IN DOMNode) RETURN DOMNODE;

    | ----------------------------------------------------------------------------------------- |
    
    | **参数**   | **描述**    |
    | :------- | :-------- |
    | n        | 被添加的node。 |
    | newchild | 添加的新node。 |
    
    ![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/2efe700ee6e047ac9cefcced035d4981~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771295904&x-signature=tduTmGCNynxh73uf34jRlFiD7jQ%3D)
    
    1.  DOCUMENT类型节点下APPEND ATTR类型节点会报“operation not support”错误,ORA数据库在此场景下不报错,但实际并没有挂载成功。
    1.  ATTR类型节点下APPEND ATTR类型节点会报“operation not support”错误,ORA数据库在此场景下不报错,但实际并没有挂载成功。
    1.  父节点在添加多个ATTR类型子节点时,不允许KEY值相同的子节点同时存在于同一个父节点下。
    
    示例:
    
    | ```
    --为指定的DOC树添加DOMNODE节点,并通过DBE_XMLDOM.HASCHILDNODES()验证子节点是否添加成功。 DECLARE     doc DBE_XMLDOM.DOMDocument;     doc1 DBE_XMLDOM.DOMDocument;     root DBE_XMLDOM.DOMElement;     rootnode DBE_XMLDOM.DOMNode;     child1 DBE_XMLDOM.DOMElement;     child2 DBE_XMLDOM.DOMElement;     attr DBE_XMLDOM.DOMAttr;     text DBE_XMLDOM.DOMTEXT;     node DBE_XMLDOM.DOMNode;     child1_node DBE_XMLDOM.DOMNode;     attr_node DBE_XMLDOM.DOMNode;     parent DBE_XMLDOM.DOMNode;     buf varchar2(1000); BEGIN     doc := DBE_XMLDOM.newDOMDocument();     root := DBE_XMLDOM.createElement(doc, 'root');     rootnode := DBE_xmldom.makeNode(root);     node := DBE_XMLDOM.appendChild(DBE_xmldom.makeNode(doc), rootnode);     child1 := DBE_XMLDOM.createElement(doc, 'child1');     child1_node := DBE_XMLDOM.makeNode(child1);     node := DBE_XMLDOM.appendChild(rootnode, child1_node);     attr := DBE_XMLDOM.createAttribute(doc, 'abc');     attr_node := DBE_XMLDOM.makeNode(attr);     node := DBE_XMLDOM.appendChild(child1_node, attr_node);     IF DBE_XMLDOM.HASCHILDNODES(child1_node) THEN         DBE_OUTPUT.print_line('HAS CHILD NODES');     ELSE         DBE_OUTPUT.print_line('NOT HAS CHILD NODES ');     END IF;     parent := DBE_XMLDOM.GETPARENTNODE(attr_node);     buf := DBE_XMLDOM.GETNODENAME(parent);     DBE_OUTPUT.print_line(buf); END; / -- 预期结果为: NOT HAS CHILD NODES  ANONYMOUS BLOCK EXECUTE 
    ``` |
    | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.CREATEELEMENT

    返回创建指定名称的DOMELEMENT对象。DBE_XMLDOM.CREATEELEMENT的函数原型为:

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

    返回创建指定名称和命名空间的DOMELEMENT对象。DBE_XMLDOM.CREATEELEMENT的函数原型为:

    DBE_XMLDOM.CREATEELEMENT(
       doc        IN     DOMDOCUMENT,
       tagName    IN     VARCHAR2,
       ns         IN     VARCHAR2)
     RETURN DOMELEMENT;
    
    参数描述
    doc指定的DOMDOCUMENT对象。
    tagName新建的DOMELEMENT名称。
    ns命名空间。

    1. tagName参数传入NULL和空字符串时,都会抛出异常 "NULL or invalid TagName argument specified"
    2. tagName和ns默认的最大长度为32767,超过该长度会抛出异常。

    示例:

    | ``` --1. 创建指定名称的DOMELEMENT对象。 DECLARE doc dbe_xmldom.domdocument; attr DBE_XMLDOM.DOMATTR; elem DBE_XMLDOM.DOMELEMENT; ans DBE_XMLDOM.DOMATTR; buf varchar2(1010); BEGIN doc := dbe_xmldom.newdomdocument(' Ryzen 9 3950X 32GBx2 DDR4 3200MHz ROG X570i RTX2070 Super 1TB NVMe Toshiba + 2TB NVMe WD Black 12TB WD Digital CORSAIR SF750 LIANLI TU150 '); elem := dbe_xmldom.createelement(doc,'elem'); DBE_XMLDOM.WRITETOBUFFER(dbe_xmldom.makenode(elem), buf); DBE_OUTPUT.print_line(buf); END; / -- 预期结果为: ANONYMOUS BLOCK EXECUTE --2. 创建指定名称和命名空间的DOMELEMENT对象。 DECLARE doc dbe_xmldom.domdocument; attr DBE_XMLDOM.DOMATTR; elem DBE_XMLDOM.DOMELEMENT; ans DBE_XMLDOM.DOMNODE; buf varchar2(1010); list DBE_XMLDOM.DOMNODELIST; node DBE_XMLDOM.DOMNODE; BEGIN doc := dbe_xmldom.newdomdocument('<h:data xmlns:h="www.w3.org/TR/html4/"> <h:da1 len="10">test namespace</h:da1><h:da1>bbbbbbbbbb</h:da1></h:data>'); elem := dbe_xmldom.createelement(doc,'elem','www.w3.org/TR/html5/'); ans := DBE_XMLDOM.APPENDCHILD(dbe_xmldom.makenode(doc), dbe_xmldom.makenode(elem)); DBE_XMLDOM.WRITETOBUFFER(doc, buf); DBE_OUTPUT.print_line(buf); END; / -- 预期结果为: <h:data xmlns:h="www.w3.org/TR/html4/"> <h:da1 len="10">test namespace</h:da1> <h:da1>bbbbbbbbbb</h:da1> </h:data> ANONYMOUS BLOCK EXECUTE

    | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.CREATETEXTNODE

    创建并返回DOMTEXT对象。DBE_XMLDOM.CREATETEXTNOD的函数原型为:

    DBE_XMLDOM.CREATETEXTNODE(
       doc IN DOMDocument,
       data IN VARCHAR2)
    RETURN DOMTEXT;
    
    参数描述
    doc指定的DOMDOCUMENT。
    dataDOMText节点的内容。

    1. data可以输入空字符串和NULL值。
    2. data默认的最大长度为32767,超过该长度会抛出异常。

    示例:

    | ``` --为DOC树添加DOMTEXT节点,并将DOC树打印输出到缓冲区。 DECLARE doc DBE_XMLDOM.DOMDOCUMENT; doctext DBE_XMLDOM.DOMTEXT; node DBE_XMLDOM.DOMNODE; buffer varchar2(1010); BEGIN doc := dbe_xmldom.newdomdocument(' ]> 中文 Jani Reminder Don''t forget me this weekend! '); doctext := DBE_XMLDOM.CREATETEXTNODE(doc, 'there is nothing'); node := DBE_XMLDOM.MAKENODE(doctext); dbe_xmldom.writetobuffer(node, buffer); dbe_output.print_line('buffer: '); dbe_output.print_line(buffer); END; / -- 预期结果为: buffer: there is nothing ANONYMOUS BLOCK EXECUTE

    | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.FREEDOCUMENT

    释放DOMDOCUMENT节点。DBE_XMLDOM.FREEDOCUMENT的函数原型为:

    DBE_XMLDOM.FREEDOCUMENT(
       doc     IN     DOMDOCUMENT);
    
    参数描述
    doc指定的DOMDOCUMENT节点。

    示例:

    | ``` --在DOC树中添加DOMNODE节点后,将整个DOC树的资源释放。 DECLARE doc dbe_xmldom.domdocument; elem dbe_xmldom.domelement; doc_node dbe_xmldom.DOMNODE; root_elmt dbe_xmldom.DOMELEMENT; root_node dbe_xmldom.DOMNODE; value varchar(1000); BEGIN doc := dbe_xmldom.newdomdocument(); doc_node := dbe_xmldom.MAKENODE(doc); root_elmt := dbe_xmldom.CREATEELEMENT(doc,'staff'); root_node:=dbe_xmldom.APPENDCHILD(doc_node, dbe_xmldom.MAKENODE(root_elmt)); dbe_xmldom.freedocument(doc); END; / -- 预期结果为: ANONYMOUS BLOCK EXECUTE

    | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.FREEELEMENT

    释放DOMELEMENT节点。DBE_XMLDOM.FREEELEMENT的函数原型为:

    DBE_XMLDOM.FREEELEMENT(
       elem     IN     DOMELEMENT);
    
    参数描述
    elem指定的DOMELEMENT节点。

    示例:

    | ``` --从DOC中获取DOMELEMENT节点后对其进行释放,对比其free前后是否为空的情况。 DECLARE doc dbe_xmldom.domdocument; elem dbe_xmldom.domelement; node dbe_xmldom.domnode; node1 dbe_xmldom.domnode; nodelist DBE_XMLDOM.DOMNODELIST; len INTEGER; buffer varchar2(1010); BEGIN doc := dbe_xmldom.newdomdocument(' ]> 中文 Jani Reminder Don''t forget me this weekend! '); elem := dbe_xmldom.GETDOCUMENTELEMENT(doc); IF DBE_XMLDOM.ISNULL(elem) THEN dbe_output.print_line('IS NULL'); ELSE dbe_output.print_line('NOT NULL'); END IF; dbe_xmldom.FREEELEMENT(elem); IF DBE_XMLDOM.ISNULL(elem) THEN dbe_output.print_line('IS NULL'); ELSE dbe_output.print_line('NOT NULL'); END IF; END; / -- 预期结果为: NOT NULL IS NULL ANONYMOUS BLOCK EXECUTE

    | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.FREENODE

    释放DOMNODE节点。DBE_XMLDOM.FREENODE的函数原型为:

    DBE_XMLDOM.FREENODE(
       n IN DOMNODE);
    
    参数描述
    n指定的DOMNODE节点。

    1. GaussDB数据库进行FREENODE操作后,被释放的节点不会出现重新可用的情况;ORA数据库在FREENODE后存在被释放的节点重新可用并变成其他节点的情况。
    2. 其他接口在调用被释放的DOMNOD节点时与ORA数据库存在差异。

    示例:

    | ``` --从DOC树中获取一个DOMNODE节点后对其进行释放,对比其free前后是否为空的情况。 DECLARE doc dbe_xmldom.domdocument; node dbe_xmldom.domnode; node1 dbe_xmldom.domnode; nodelist DBE_XMLDOM.DOMNODELIST; len INTEGER; buffer1 varchar2(1010); BEGIN doc := dbe_xmldom.newdomdocument(' ]> 中文 Jani Reminder Don''t forget me this weekend! '); node := dbe_xmldom.makenode(doc); node := dbe_xmldom.GETFIRSTCHILD(node); IF DBE_XMLDOM.ISNULL(node) THEN dbe_output.print_line('IS NULL'); ELSE dbe_output.print_line('NOT NULL'); END IF; DBE_XMLDOM.FREENODE(node); IF DBE_XMLDOM.ISNULL(node) THEN dbe_output.print_line('IS NULL'); ELSE dbe_output.print_line('NOT NULL'); END IF; END; / -- 预期结果为: NOT NULL IS NULL ANONYMOUS BLOCK EXECUTE

    | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.FREENODELIST

    释放DOMNODELIST节点。DBE_XMLDOM.FREENODE的函数原型为:

    DBE_XMLDOM.GETLENGTH(
       nl     IN    DOMNODELIST);
    
    参数描述
    nl指定的DOMNODELIST节点。

    1. FREENODELIST会彻底释放NODELIST。
    2. 其他接口在调用被释放的DOMNODELIST节点时与ORA数据库存在差异。
    3. freenodelist不允许空值入参。

    示例:

    | ``` --从DOC树中获取一个DOMNODELIST节点后对其进行释放,对比其free前后的长度。 DECLARE doc dbe_xmldom.domdocument; node dbe_xmldom.domnode; node1 dbe_xmldom.domnode; nodelist DBE_XMLDOM.DOMNODELIST; len INTEGER; buffer1 varchar2(1010); BEGIN doc := dbe_xmldom.newdomdocument(' ]> 中文 Jani Reminder Don''t forget me this weekend! '); node := dbe_xmldom.makenode(doc); node := dbe_xmldom.GETFIRSTCHILD(node); nodelist := DBE_XMLDOM.GETCHILDNODES(node); len := DBE_XMLDOM.GETLENGTH(nodelist); RAISE NOTICE 'len : %', len; DBE_XMLDOM.FREENODELIST(nodelist); len := DBE_XMLDOM.GETLENGTH(nodelist); RAISE NOTICE 'len : %', len; END; / -- 预期结果为: NOTICE: len : 4 NOTICE: len : 0 ANONYMOUS BLOCK EXECUTE

    | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETATTRIBUTE

    按名称返回DOMELEMENT属性的值。DBE_XMLDOM.GETATTRIBUTE的函数原型为:

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

    按名称和命名空间URI返回DOMELEMENT属性的值。DBE_XMLDOM.GETATTRIBUTE的函数原型为:

    DBE_XMLDOM.GETATTRIBUTE(
       elem      IN     DOMELEMENT,
       name      IN     VARCHAR2,
       ns        IN     VARCHAR2)
    RETURN VARCHAR2;
    
    参数描述
    elem指定的DOMELEMENT节点。
    name属性名称。
    ns命名空间。

    1. DBE_XMLDOM.GETATTRIBUTE接口的参数ns不支持传入参数" * "。
    2. GaussDB数据库不支持将命名空间前缀作为属性,不允许通过DBE_XMLDOM.GETATTRIBUTE接口查询该前缀的值。

    示例:

    | ``` --1. 按名称返回DOMELEMENT属性的值。 DECLARE doc dbe_xmldom.domdocument; elem dbe_xmldom.domelement; docnode DBE_XMLDOM.DOMNode; buffer varchar2(1010); value varchar2(1000); BEGIN doc := dbe_xmldom.newDOMDocument(); elem := DBE_XMLDOM.CREATEELEMENT(doc, 'root'); DBE_XMLDOM.setattribute(elem, 'len', '50cm'); docnode := DBE_XMLDOM.appendChild(DBE_XMLDOM.makeNode(doc), DBE_XMLDOM.makeNode(elem)); value := DBE_XMLDOM.getattribute(elem, 'len'); dbe_output.print_line('value: '); dbe_output.print_line(value); dbe_xmldom.writetobuffer(doc, buffer); dbe_output.print_line('buffer: '); dbe_output.print_line(buffer); END; / -- 预期结果为: value: 50cm buffer: ANONYMOUS BLOCK EXECUTE --2. 按名称和命名空间URI返回DOMELEMENT属性的值。 DECLARE doc dbe_xmldom.domdocument; elem dbe_xmldom.domelement; docnode DBE_XMLDOM.DOMNode; buffer varchar2(1010); value varchar(1000); BEGIN doc := dbe_xmldom.newDOMDocument(); elem := DBE_XMLDOM.CREATEELEMENT(doc, 'root'); DBE_XMLDOM.setattribute(elem, 'len', '50cm', 'www.huawei.com'); docnode := DBE_XMLDOM.appendChild(DBE_XMLDOM.makeNode(doc), DBE_XMLDOM.makeNode(elem)); value := DBE_XMLDOM.getattribute(elem, 'len', 'www.huawei.com'); dbe_output.print_line('value: '); dbe_output.print_line(value); dbe_xmldom.writetobuffer(doc, buffer); dbe_output.print_line('buffer: '); dbe_output.print_line(buffer); END; / -- 预期结果为: value: 50cm buffer: ANONYMOUS BLOCK EXECUTE

    | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETATTRIBUTES

    将DOMNode节点属性值作为map返回。DBE_XMLDOM.GETATTRIBUTES的函数原型为:

    DBE_XMLDOM.GETATTRIBUTES(
       n IN DOMNode)
    RETURN DOMNAMEDNODEMAP;
    
    参数描述
    n指定的DOMNODE节点。

    示例:

    | ``` --获取DOMNODE节点下的属性值并返回DOMNAMEDNODEMAP类型,输出DOMNAMEDNODEMAP的长度和第一个节点值。 DECLARE doc dbe_xmldom.domdocument; node dbe_xmldom.domnode; node1 dbe_xmldom.domnode; len INTEGER; map DBE_XMLDOM.DOMNAMEDNODEMAP; buffer1 varchar2(1010); BEGIN doc := dbe_xmldom.newdomdocument(' 中文 Jani Reminder Don''t forget me this weekend! '); node := dbe_xmldom.makenode(doc); node := dbe_xmldom.GETFIRSTCHILD(node); map := DBE_XMLDOM.GETATTRIBUTES(node); IF DBE_XMLDOM.ISNULL(map) THEN dbe_output.print_line('IS NULL'); ELSE dbe_output.print_line('NOT NULL'); END IF; len := DBE_XMLDOM.GETLENGTH(map); RAISE NOTICE 'len : %', len; node1 := DBE_XMLDOM.ITEM(map, 0); dbe_xmldom.writetobuffer(node1, buffer1); dbe_output.print_line('buffer1: '); dbe_output.print_line(buffer1); END; / -- 预期结果为: NOT NULL NOTICE: len : 3 buffer1: 16 ANONYMOUS BLOCK EXECUTE

    | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETCHILDNODES

    函数将节点下的若干子节点转换成节点列表。DBE_XMLDOM.GETCHILDNODES的函数原型为:

    DBE_XMLDOM.GETCHILDNODES(
       n IN DOMNode)
    RETURN DOMNodeList;
    
    参数描述
    n指定的DOMNODE节点。

    示例:

    | ``` --获取DOC树的第一个子节点后,将节点下的若干子节点转换成节点列表,输出其长度信息。 DECLARE doc dbe_xmldom.domdocument; doc_node dbe_xmldom.domnode; root_node dbe_xmldom.domnode; node_list dbe_xmldom.domnodelist; list_len integer; node_name varchar2(1000); node_type integer; buffer varchar2(1010); BEGIN doc := dbe_xmldom.newdomdocument(' 中文 Jani Reminder Don''t forget me this weekend! '); doc_node := DBE_XMLDOM.MAKENODE(doc); root_node := DBE_XMLDOM.GETFIRSTCHILD(doc_node); node_name := DBE_XMLDOM.GETNODENAME(root_node); node_type := DBE_XMLDOM.GETNODETYPE(root_node); dbe_output.print_line(node_name); dbe_output.print_line(node_type); node_list := DBE_XMLDOM.GETCHILDNODES(root_node); list_len := DBE_XMLDOM.GETLENGTH(node_list); dbe_output.print_line(list_len); END; / -- 预期结果为: note 1 4 ANONYMOUS BLOCK EXECUTE

    | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETCHILDRENBYTAGNAME

    按名称返回DOMELEMENT的子节点。DBE_XMLDOM.GETCHILDRENBYTAGNAME的函数原型为:

    DBE_XMLDOM.GETCHILDRENBYTAGNAME (
       elem       IN      DOMELEMENT,
       name       IN      VARCHAR2)
    RETURN DOMNODELIST;
    

    按名称和命名空间返回DOMELEMENT的子节点。DBE_XMLDOM.GETCHILDRENBYTAGNAME的函数原型为:

    DBE_XMLDOM.GETCHILDRENBYTAGNAME (
       elem      IN     DOMELEMENT,
       name      IN     VARCHAR2,
       ns        IN     VARCHAR2)
     RETURN DOMNODELIST;
    
    参数描述
    elem指定的DOMELEMENT节点。
    name属性名称。
    ns命名空间。

    DBE_XMLDOM.GETCHILDRENBYTAGNAME接口的参数ns不支持传入参数" * ",如需获取节点下全部属性,可使用DBE_XMLDOM.GETCHILDNODES接口。

    示例:

    | ``` --1. 按名称返回DOMELEMENT的子节点。 DECLARE doc dbe_xmldom.domdocument; elem dbe_xmldom.domelement; docnodelist dbe_xmldom.domnodelist; node_elem dbe_xmldom.domelement; node dbe_xmldom.domnode; buffer varchar2(1010); value varchar2(1000); BEGIN doc := dbe_xmldom.newdomdocument(' Jerry519man12345 Bob245woman54321 '); elem := dbe_xmldom.GETDOCUMENTELEMENT(doc); docnodelist := dbe_xmldom.GETCHILDRENBYTAGNAME(elem, 'student'); node := dbe_xmldom.ITEM(docnodelist, 0); node_elem := dbe_xmldom.makeelement(node); value := DBE_XMLDOM.gettagname(node_elem); dbe_output.print_line('value: '); dbe_output.print_line(value); dbe_xmldom.writetobuffer(doc, buffer); dbe_output.print_line('buffer: '); dbe_output.print_line(buffer); END; / -- 预期结果为: value: student buffer: Jerry 519 man 12345 Bob 245 woman 54321 ANONYMOUS BLOCK EXECUTE --2. 按名称和命名空间返回DOMELEMENT的子节点。 DECLARE doc dbe_xmldom.domdocument; elem dbe_xmldom.domelement; node dbe_xmldom.domnode; node_elem dbe_xmldom.domelement; docnodelist dbe_xmldom.domnodelist; buffer varchar2(1010); value varchar2(1000); BEGIN doc := dbe_xmldom.newdomdocument(' <h:to h:len="50cm">中文</h:to> Jani Reminder Don''t forget me this weekend! '); elem := dbe_xmldom.GETDOCUMENTELEMENT(doc); docnodelist := dbe_xmldom.GETCHILDRENBYTAGNAME(elem, 'to', 'www.huawei.com'); node := dbe_xmldom.ITEM(docnodelist, 0); node_elem := dbe_xmldom.makeelement(node); value := DBE_XMLDOM.getattribute(node_elem, 'len'); dbe_output.print_line('value: '); dbe_output.print_line(value); END; / -- 预期结果为: value: 50cm ANONYMOUS BLOCK EXECUTE

    | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETDOCUMENTELEMENT

    返回指定DOCUMENT的首个子节点。DBE_XMLDOM.GETDOCUMENTELEMENT的函数原型为:

    DBE_XMLDOM.GETDOCUMENTELEMENT(
       doc      IN      DOMDOCUMENT)
     RETURN DOMELEMENT;
    
    参数描述
    doc指定的DOMDOCUMENT节点。

    示例:

    | ``` --获取DOC树中的首个子节点,并输出该节点的名称。 DECLARE doc dbe_xmldom.domdocument; elem dbe_xmldom.domelement; doc_node dbe_xmldom.DOMNODE; root_elmt dbe_xmldom.DOMELEMENT; root_node dbe_xmldom.DOMNODE; value varchar(1000); BEGIN doc := dbe_xmldom.newdomdocument(); doc_node := dbe_xmldom.MAKENODE(doc); root_elmt := dbe_xmldom.CREATEELEMENT(doc,'staff'); root_node:=dbe_xmldom.APPENDCHILD(doc_node, dbe_xmldom.MAKENODE(root_elmt)); elem := dbe_xmldom.GETDOCUMENTELEMENT(doc); value := DBE_XMLDOM.gettagname(elem); dbe_output.print_line(value); END; / -- 预期结果为: staff ANONYMOUS BLOCK EXECUTE

    | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETFIRSTCHILD

    返回节点的第一个子节点。DBE_XMLDOM.GETFIRSTCHILD的函数原型为:

    DBE_XMLDOM.GETFIRSTCHILD(
       n IN DOMNODE)
    RETURN DOMNODE;
    
    参数描述
    n指定的DOMNODE节点。

    示例:

    | ``` --获取DOC转换成DOMNODE类型后的第一个子节点后输出其名称和类型;在获取到的第一个子节点基础上,获取该DOMNODE的第一个子节点并输出其名称。 DECLARE doc dbe_xmldom.domdocument; doc_node dbe_xmldom.domnode; root_node dbe_xmldom.domnode; inside_node dbe_xmldom.domnode; node_name varchar2(1000); node_type integer; BEGIN doc := dbe_xmldom.newdomdocument(' Jerry519man12345 Bob245woman54321 '); doc_node := DBE_XMLDOM.MAKENODE(doc); root_node := DBE_XMLDOM.GETFIRSTCHILD(doc_node); node_name := DBE_XMLDOM.GETNODENAME(root_node); node_type := DBE_XMLDOM.GETNODETYPE(root_node); dbe_output.print_line(node_name); dbe_output.print_line(node_type); inside_node := DBE_XMLDOM.GETFIRSTCHILD(root_node); node_name := DBE_XMLDOM.GETNODENAME(inside_node); dbe_output.print_line(node_name); END; / -- 预期结果为: students 1 student1 ANONYMOUS BLOCK EXECUTE

    | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETLASTCHILD

    返回节点的最后一个子节点。DBE_XMLDOM.GETLASTCHILD的函数原型为:

    DBE_XMLDOM.GETLASTCHILD(
       n IN DOMNODE)
    RETURN DOMNODE;
    
    参数描述
    n指定的DOMNODE节点。

    示例:

    | ``` --获取DOC转换成DOMNODE类型后的最后一个子节点后输出其名称和类型;在获取到的最后一个子节点基础上,获取该DOMNODE的最后一个子节点并输出其名称。 DECLARE doc dbe_xmldom.domdocument; doc_node dbe_xmldom.domnode; root_node dbe_xmldom.domnode; inside_node dbe_xmldom.domnode; node_name varchar2(1000); node_type integer; BEGIN doc := dbe_xmldom.newdomdocument(' Jerry519man12345 Bob245woman54321 '); doc_node := DBE_XMLDOM.MAKENODE(doc); root_node := DBE_XMLDOM.GETFIRSTCHILD(doc_node); node_name := DBE_XMLDOM.GETNODENAME(root_node); node_type := DBE_XMLDOM.GETNODETYPE(root_node); dbe_output.print_line(node_name); dbe_output.print_line(node_type); inside_node := DBE_XMLDOM.GETLASTCHILD(root_node); node_name := DBE_XMLDOM.GETNODENAME(inside_node); dbe_output.print_line(node_name); END; / -- 预期结果为: students 1 student2 ANONYMOUS BLOCK EXECUTE

    | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETLENGTH

    返回DOMNAMEDNODEMAP类型节点中的节点数。DBE_XMLDOM.GETLENGTH的函数原型为:

    DBE_XMLDOM.GETLENGTH(
       nnm      IN     DOMNAMEDNODEMAP)
     RETURN NUMBER;
    

    返回DOMNODELIST类型节点中的节点数。DBE_XMLDOM.GETLENGTH的函数原型为:

    DBE_XMLDOM.GETLENGTH(
       nl     IN    DOMNODELIST)
     RETURN NUMBER;
    
    参数描述
    nnm指定的DOMNAMEDNODEMAP类型节点。
    nl指定的DOMNODELIST类型节点。

    示例:

    | ``` --1. DOMNAMEDNODEMAP类型作为函数参数。 DECLARE doc DBE_XMLDOM.DOMDocument; elem DBE_XMLDOM.DOMElement; map DBE_XMLDOM.DOMNAMEDNODEMAP; node DBE_XMLDOM.DOMNODE; buf varchar2(10000); len INTEGER; BEGIN doc := dbe_xmldom.newdomdocument(' Everyday Italian Giada De Laurentiis 2005 30.00 '); elem := DBE_XMLDOM.GETDOCUMENTELEMENT(doc); node := DBE_XMLDOM.MAKENODE(elem); map := DBE_XMLDOM.GETATTRIBUTES(node); len := DBE_XMLDOM.GETLENGTH(map); DBE_OUTPUT.print_line(len); END; / -- 预期结果为: 2 ANONYMOUS BLOCK EXECUTE --2. Nodelist类型作为函数参数 DECLARE doc dbe_xmldom.domdocument; node dbe_xmldom.domnode; node1 dbe_xmldom.domnode; nodelist DBE_XMLDOM.DOMNODELIST; len INTEGER; buffer1 varchar2(1010); BEGIN doc := dbe_xmldom.newdomdocument(' Jerry519man12345 Jerry519man12345 '); node := dbe_xmldom.makenode(doc); node := dbe_xmldom.GETFIRSTCHILD(node); nodelist := DBE_XMLDOM.GETCHILDNODES(node); len := DBE_XMLDOM.GETLENGTH(nodelist); RAISE NOTICE 'len : %', len; END; / -- 预期结果为: NOTICE: len : 2 ANONYMOUS BLOCK EXECUTE

    | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETLOCALNAME

    函数返回给定的DOMATTR类型节点的本地名称。DBE_XMLDOM.MAKENODE的函数原型为:

    DBE_XMLDOM.GETLOCALNAME(
       a       IN     DOMATTR)
    RETURN VARCHAR2;
    

    函数返回给定的DOMELEMENT类型节点的本地名称。DBE_XMLDOM.MAKENODE的函数原型为

    DBE_XMLDOM.GETLOCALNAME(
       elem       IN     DOMELEMENT)
    RETURN VARCHAR2;
    

    存储过程返回给定的DOMNODE类型节点的本地名称。DBE_XMLDOM.MAKENODE的函数原型为

    DBE_XMLDOM.GETLOCALNAME(
       n      IN     DOMNODE,
       data   OUT    VARCHAR2);
    
    参数描述
    a指定的DOMATTR类型节点。
    elem指定的DOMELEMENT类型节点。
    n指定的DOMNODE类型节点。
    data返回的本地名称。

    示例:

    | ``` --1. createAttribute函数生成attr节点,获取它的本地名称。 DECLARE doc DBE_XMLDOM.DOMDocument; root DBE_XMLDOM.DOMElement; attr1 DBE_XMLDOM.DOMATTR; value VARCHAR2(1000); BEGIN doc := DBE_xmldom.newdomdocument(' ]> 中文 Jani Reminder Don''t forget me this weekend! '); attr1 := DBE_XMLDOM.createAttribute(doc,'len'); value := DBE_XMLDOM.getlocalname(attr1); DBE_output.print_line('value: '); DBE_output.print_line(value); END; / -- 预期结果为: value: len ANONYMOUS BLOCK EXECUTE --2. createElement函数生成elem节点,获取它的本地名称。 DECLARE doc DBE_xmldom.domdocument; elem DBE_xmldom.domelement; value varchar2(10000); BEGIN doc := DBE_xmldom.newdomdocument(); elem := DBE_XMLDOM.createELEMENT(doc, 'root'); value := DBE_XMLDOM.getlocalname(elem); DBE_output.print_line('value: '); DBE_output.print_line(value); END; / -- 预期结果为: value: root ANONYMOUS BLOCK EXECUTE --3. Element节点转换成node节点后,取其本地名称。 DECLARE doc DBE_xmldom.domdocument; elem DBE_xmldom.domelement; node DBE_xmldom.domnode; value varchar2(100); buf varchar2(100); BEGIN doc := DBE_xmldom.newdomdocument(); elem := DBE_XMLDOM.createELEMENT(doc, 'root'); node := DBE_xmldom.makenode(elem); DBE_XMLDOM.getlocalname(node, buf); DBE_output.print_line('buf: '); DBE_output.print_line(buf); END; / -- 预期结果为: buf: root ANONYMOUS BLOCK EXECUTE

    | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETNAMEDITEM

    检索由名称指定的节点。DBE_XMLDOM.GETNAMEDITEM的函数原型为:

    DBE_XMLDOM.GETNAMEDITEM(
       nnm IN DOMNAMEDNODEMAP,
       name IN VARCHAR2)
    RETURN DOMNODE;
    

    检索由名称和命名空间指定的节点。DBE_XMLDOM.GETNAMEDITEM的函数原型为:

    DBE_XMLDOM.GETNAMEDITEM(
       nnm IN DOMNAMEDNODEMAP,
       name IN VARCHAR2,
       ns IN VARCHAR2)
    RETURN DOMNODE;
    
    参数描述
    nnmDOMNAMEDNODEMAP。
    name要检索的元素名称。
    ns命名空间。

    1. name和nnm可以输入NULL值,但不可不入参。
    2. name和ns默认的最大长度为32767,超出该长度会报错。
    3. name和ns可输入int类型,长度可超出127位。

    示例:

    | ``` --1. 检索由名称指定的节点。 DECLARE doc DBE_XMLDOM.DOMDocument; elem DBE_XMLDOM.DOMElement; map DBE_XMLDOM.DOMNAMEDNODEMAP; node DBE_XMLDOM.DOMNODE; node2 DBE_XMLDOM.DOMNODE; buf varchar2(1000); buf2 varchar2(1000); BEGIN doc := dbe_xmldom.newdomdocument(' Everyday Italian Giada De Laurentiis2005 30.00'); elem := DBE_XMLDOM.GETDOCUMENTELEMENT(doc); node := DBE_XMLDOM.MAKENODE(elem); map := DBE_XMLDOM.GETATTRIBUTES(node); node2:= DBE_XMLDOM.GETNAMEDITEM(map,'category'); DBE_XMLDOM.writeToBuffer(node2, buf2); dbe_output.print_line(buf2); END; / -- 预期结果为: web ANONYMOUS BLOCK EXECUTE --2. 检索由名称和命名空间指定的节点。 DECLARE doc DBE_XMLDOM.DOMDocument; root DBE_XMLDOM.DOMElement; elem DBE_XMLDOM.DOMElement; map DBE_XMLDOM.DOMNAMEDNODEMAP; node DBE_XMLDOM.DOMNODE; buf varchar2(1000); buf2 varchar2(1000); BEGIN doc := dbe_xmldom.newdomdocument('<h:table xmlns:h="www.w3.org/TR/html4/"> <h:tr h:id="10"><h:td >Apples</h:td> <h:td>Bananas</h:td></h:tr></h:table>'); root := DBE_XMLDOM.getDocumentElement(doc); node := DBE_XMLDOM.MAKENODE(root); node := dbe_xmldom.GETFIRSTCHILD(node); map := DBE_XMLDOM.GETATTRIBUTES(node); node := DBE_XMLDOM.GETNAMEDITEM(map,'id','www.w3.org/TR/html4/'); DBE_XMLDOM.writeToBuffer(node, buf2); dbe_output.print_line(buf2); END; / -- 预期结果为: 10 ANONYMOUS BLOCK EXECUTE

    | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETNEXTSIBLING

    返回下一个节点。DBE_XMLDOM.GETNEXTSIBLING的函数原型为:

    DBE_XMLDOM.GETNEXTSIBLING(
       n  IN  DOMNODE)
    RETURN DOMNODE;
    
    参数描述
    n指定的DOMNODE节点。

    示例:

    | ``` --首先获取DOC转换成DOMNODE类型后的第一个子节点;在获取到的第一个子节点基础上,获取该DOMNODE的第一个子节点;通过DBE_XMLDOM.GETNEXTSIBLING获取该节点的下一个节点,并输出下一个节点的名称。 DECLARE doc dbe_xmldom.domdocument; doc_node dbe_xmldom.domnode; root_node dbe_xmldom.domnode; inside_node dbe_xmldom.domnode; node_name varchar2(1000); node_type integer; BEGIN doc := dbe_xmldom.newdomdocument(' Ryzen 9 3950X 32GBx2 DDR4 3200MHz X570i '); doc_node := DBE_XMLDOM.MAKENODE(doc); root_node := DBE_XMLDOM.GETFIRSTCHILD(doc_node); node_name := DBE_XMLDOM.GETNODENAME(root_node); node_type := DBE_XMLDOM.GETNODETYPE(root_node); dbe_output.print_line(node_name); dbe_output.print_line(node_type); inside_node := DBE_XMLDOM.GETFIRSTCHILD(root_node); node_name := DBE_XMLDOM.GETNODENAME(inside_node); dbe_output.print_line(node_name); inside_node := DBE_XMLDOM.GETNEXTSIBLING(inside_node); node_name := DBE_XMLDOM.GETNODENAME(inside_node); dbe_output.print_line(node_name); END; / -- 预期结果为: computer 1 cpu ram ANONYMOUS BLOCK EXECUTE

    | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETNODENAME

    返回NODE节点的名称。DBE_XMLDOM.GETNODENAME的函数原型为:

    DBE_XMLDOM.GETNODENAME(
       n  IN  DOMNODE)
    RETURN  VARCHAR2;
    
    参数描述
    n指定的DOMNODE节点。

    示例:

    | ``` --在DOC树中获取DOMNODE节点,输出该节点的名称。 DECLARE doc DBE_XMLDOM.DOMDocument; root DBE_XMLDOM.DOMElement; root_node DBE_XMLDOM.DOMNode; inside_node DBE_XMLDOM.DOMNode; buf VARCHAR2(1000); BEGIN doc := dbe_xmldom.newdomdocument(' Everyday Italian Giada De Laurentiis2005 30.00'); root := DBE_XMLDOM.getDocumentElement(doc); root_node := DBE_XMLDOM.MAKENODE(root); inside_node := DBE_XMLDOM.GETFIRSTCHILD(root_node); buf := DBE_XMLDOM.GETNODENAME(inside_node); dbe_output.print_line(buf); END; / -- 预期结果为: book ANONYMOUS BLOCK EXECUTE

    | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETNODETYPE

    返回NODE节点的类型。DBE_XMLDOM.GETNODETYPE的函数原型为:

    DBE_XMLDOM.GETNODETYPE(
       n  IN  DOMNODE)
    RETURN  NUMBER;
    
    参数描述
    n指定的DOMNODE节点。

    示例:

    | ``` --在DOC树中获取DOMNODE节点,输出该节点的类型值。 DECLARE doc DBE_XMLDOM.DOMDocument; doc_node DBE_XMLDOM.DOMNode; num number; buf varchar2(1000); BEGIN doc := dbe_xmldom.newdomdocument(' Everyday Italian Giada De Laurentiis2005 30.00'); doc_node := DBE_XMLDOM.makeNode(doc); num := DBE_XMLDOM.GETNODETYPE(doc_node); dbe_output.print_line(num); buf := DBE_XMLDOM.GETNODENAME(doc_node); dbe_output.print_line(buf); END; / -- 预期结果为: 9 #document ANONYMOUS BLOCK EXECUTE

    | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETNODEVALUE

    返回NODE节点的值。DBE_XMLDOM.GETNODEVALUE的函数原型为:

    DBE_XMLDOM.GETNODEVALUE(
       n  IN  DOMNODE)
    RETURN  VARCHAR2;
    
    参数描述
    n指定的DOMNODE对象。

    示例:

    | ``` --将DOMTEXT类型节点转换为DOMNODE类型后获取该节点的值并输出。 DECLARE buf VARCHAR2(1000); doc DBE_XMLDOM.DOMDocument; text DBE_XMLDOM.DOMText; elem2 DBE_XMLDOM.DOMElement; node DBE_XMLDOM.DOMNode; begin doc := DBE_XMLDOM.NEWDOMDOCUMENT(); text := DBE_XMLDOM.createTextNode(doc, 'aaa'); DBE_XMLDOM.SETNODEVALUE(DBE_XMLDOM.makeNode(text), 'ccc'); buf := DBE_XMLDOM.GETNODEVALUE(DBE_XMLDOM.makeNode(text)); DBE_OUTPUT.print_line(buf); end; / -- 预期结果为: ccc ANONYMOUS BLOCK EXECUTE

    | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
  • DBE_XMLDOM.GETPARENTNODE

    返回给定NODE节点的父节点。DBE_XMLDOM.GETPARENTNODE的函数原型为:

    DBE_XMLDOM.GETPARENTNODE(
       n  IN  DOMNODE)
    RETURN  DOMNODE;
    
    参数描述
    n指定的DOMNODE对象。

    示例:

    | ``` --向DOC树中添加子节点后,获取该子节点的父节点,输出父节点的名称。 DECLARE doc DBE_XMLDOM.DOMDocument; doc1 DBE_XMLDOM.DOMDocument; root DBE_XMLDOM.DOMElement; child1 DBE_XMLDOM.DOMElement; child2 DBE_XMLDOM.DOMElement; attr DBE_XMLDOM.DOMAttr; text DBE_XMLDOM.DOMTEXT; node DBE_XMLDOM.DOMNode; parent DBE_XMLDOM.DOMNode; buf varchar2(1000); BEGIN doc := DBE_XMLDOM.newDOMDocument(); root := DBE_XMLDOM.createElement(doc, 'root'); node := DBE_XMLDOM.appendChild(DBE_xmldom.makeNode(doc),DBE_xmldom.makeNode(root)); child1 := DBE_XMLDOM.createElement(doc, 'child1'); node := DBE_XMLDOM.appendChild(DBE_XMLDOM.makeNode(root), DBE_XMLDOM.makeNode(child1)); child2 := DBE_XMLDOM.createElement(doc, 'child2'); node := DBE_XMLDOM.appendChild(DBE_XMLDOM.makeNode(child1), DBE_XMLDOM.makeNode(child2)); parent := DBE_XMLDOM.GETPARENTNODE(DBE_XMLDOM.makeNode(child2)); buf := DBE_XMLDOM.GETNODENAME(parent); DBE_OUTPUT.print_line(buf); END; / -- 预期结果为: child1 ANONYMOUS BLOCK EXECUTE

    | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    

更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…