如何解析Oracle CLOB XML数据获取节点值?
How to parse Oracle CLOB XML data to get node value?
我正在尝试解析大量 XML CLOB 数据以获取一些节点值。所以我在 DBMS_XMLPARSER 的帮助下编写了一个方法来检索节点的值并且它工作正常。
FUNCTION Get_Node_Value(
node_ IN DBMS_XMLDOM.DOMNode) RETURN VARCHAR2
IS
sub_nodes_list_ DBMS_XMLDOM.DOMNodeList;
sub_nodes_len_ NUMBER;
value_node_ DBMS_XMLDOM.DOMNode;
value_ VARCHAR2(50);
BEGIN
sub_nodes_list_ := DBMS_XMLDOM.Getchildnodes(node_);
sub_nodes_len_ := DBMS_XMLDOM.GetLength(sub_nodes_list_); -- sub_nodes_len_ should be 1
IF ( sub_nodes_len_ > 0 ) THEN
value_node_ := DBMS_XMLDOM.Item(sub_nodes_list_, 0);
value_ := DBMS_XMLDOM.GetNodeValue(value_node_);
END IF;
RETURN value_;
END Get_Node_Value;
但我想知道有一个通用方法,我将 XML CLOB 和节点名称作为参数并获取节点值 return 或相关的东西。由于XML太大,使用这种方法会减少不必要的编码。任何帮助将不胜感激!
Xquery 是一种查询和 "programing" 语言,设计用于处理 xml 文档。
Oracle 有两个接受 xquery 命令的主要函数。
xml表和xml查询。 usign xmltable and xmlquery
简短示例。
select * from xmltable('/ROWSET/ROW/TABLE_NAME/text()' passing xmltype('<?xml version="1.0"?>
<ROWSET>
<ROW>
<TABLE_NAME>DBA_2PC_NEIGHBORS</TABLE_NAME>
<COMMENTS>information about incoming and outgoing connections for pending transactions</COMMENTS>
</ROW>
<ROW>
<TABLE_NAME>DBA_2PC_PENDING</TABLE_NAME>
<COMMENTS>info about distributed transactions awaiting recovery</COMMENTS>
</ROW>
<ROW>
<TABLE_NAME>DBA_ADDM_FDG_BREAKDOWN</TABLE_NAME>
</ROW>
</ROWSET>') )
我正在尝试解析大量 XML CLOB 数据以获取一些节点值。所以我在 DBMS_XMLPARSER 的帮助下编写了一个方法来检索节点的值并且它工作正常。
FUNCTION Get_Node_Value(
node_ IN DBMS_XMLDOM.DOMNode) RETURN VARCHAR2
IS
sub_nodes_list_ DBMS_XMLDOM.DOMNodeList;
sub_nodes_len_ NUMBER;
value_node_ DBMS_XMLDOM.DOMNode;
value_ VARCHAR2(50);
BEGIN
sub_nodes_list_ := DBMS_XMLDOM.Getchildnodes(node_);
sub_nodes_len_ := DBMS_XMLDOM.GetLength(sub_nodes_list_); -- sub_nodes_len_ should be 1
IF ( sub_nodes_len_ > 0 ) THEN
value_node_ := DBMS_XMLDOM.Item(sub_nodes_list_, 0);
value_ := DBMS_XMLDOM.GetNodeValue(value_node_);
END IF;
RETURN value_;
END Get_Node_Value;
但我想知道有一个通用方法,我将 XML CLOB 和节点名称作为参数并获取节点值 return 或相关的东西。由于XML太大,使用这种方法会减少不必要的编码。任何帮助将不胜感激!
Xquery 是一种查询和 "programing" 语言,设计用于处理 xml 文档。 Oracle 有两个接受 xquery 命令的主要函数。 xml表和xml查询。 usign xmltable and xmlquery
简短示例。
select * from xmltable('/ROWSET/ROW/TABLE_NAME/text()' passing xmltype('<?xml version="1.0"?>
<ROWSET>
<ROW>
<TABLE_NAME>DBA_2PC_NEIGHBORS</TABLE_NAME>
<COMMENTS>information about incoming and outgoing connections for pending transactions</COMMENTS>
</ROW>
<ROW>
<TABLE_NAME>DBA_2PC_PENDING</TABLE_NAME>
<COMMENTS>info about distributed transactions awaiting recovery</COMMENTS>
</ROW>
<ROW>
<TABLE_NAME>DBA_ADDM_FDG_BREAKDOWN</TABLE_NAME>
</ROW>
</ROWSET>') )