GETNODEVALUE 関数は、指定されたノードの文字列値を取得するために使用され、テキストノードまたは要素ノードの内容を読み取るのに利用できます。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみ提供します。
説明
V4.4.2バージョンでは、このサブプログラムはOceanBaseデータベースV4.4.2 BP2バージョンから導入されました。
構文
DBMS_XMLDOM.getNodeValue (
node IN DBMS_XMLDOM.DOMNODE);
パラメータの説明
パラメータ |
説明 |
|---|---|
| node | 読み取る DBMS_XMLDOM.DOMNODE ハンドル。 |
戻り値
ノードの文字列値。型は VARCHAR2 です。
使用方法
- テキストノードまたはCDATAノードの場合:そのテキスト内容を直接返します。
- 要素ノードの場合:この関数を直接呼び出すこともできます。DOM仕様によれば、これは最初の子ノード(通常は
#text)の内容を読み取ることと同じ動作であり、リーフ要素のテキスト値を取得するのに適しています。
例
この例では、テキストの子ノードを明示的に特定する方法を採用しています。まず GETCHILDNODES と ITEM を使用して #text ノードを取得し、次に GETNODEVALUE を呼び出して 'hello' を読み取ります。リーフ要素ノードを既に保持している場合は、子ノードの走査をスキップし、そのリーフ要素ノードに対して直接 GETNODEVALUE を呼び出すこともできます。
-- 解釈エンジンとドキュメントハンドル変数を宣言
DECLARE
p DBMS_XMLPARSER.PARSER;
doc DBMS_XMLDOM.DOMDOCUMENT;
nl DBMS_XMLDOM.DOMNODELIST;
n DBMS_XMLDOM.DOMNODE;
v VARCHAR2(32767);
BEGIN
-- パーサーインスタンスの作成
p := DBMS_XMLPARSER.NEWPARSER;
-- パーサーでXMLドキュメントを解析
DBMS_XMLPARSER.PARSECLOB(p, '<root><item>hello</item></root>');
-- XMLドキュメントのDOMDOCUMENTハンドルを取得
doc := DBMS_XMLPARSER.GETDOCUMENT(p);
-- パーサーインスタンスの解放
DBMS_XMLPARSER.FREEPARSER(p);
-- XMLドキュメント内のすべての "item" 要素のリストを取得
nl := DBMS_XMLDOM.GETELEMENTSBYTAGNAME(doc, 'item');
-- リストの最初の要素を取得
n := DBMS_XMLDOM.ITEM(nl, 0);
-- item要素の子ノードリストを取得
nl := DBMS_XMLDOM.GETCHILDNODES(n);
-- リストの最初の子ノード(#textテキストノード)を取得
n := DBMS_XMLDOM.ITEM(nl, 0);
-- ノード値 'hello' を取得
v := DBMS_XMLDOM.GETNODEVALUE(n);
-- XMLドキュメントリソースの解放
DBMS_XMLDOM.FREEDOCUMENT(doc);
END;
/