Я пытаюсь разобрать огромные данные XML CLOB, чтобы получить некоторые значения узлов. Поэтому я написал метод с помощью DBMS_XMLPARSER для получения значения узла, и он отлично работает.Как анализировать данные Oracle CLOB XML для получения значения узла?
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 и имя узла в качестве параметров и получить узел значение возврата назад или что-то соответствующее. Поскольку XML слишком велик, использование такого метода сократит ненужное кодирование. Любая помощь будет оценена!
Спасибо. Поскольку у меня есть XML-сообщение в BLOB, кажется сложным использовать Xquery в PL/SQL-коде! ошибки похожи на «разбор синтаксиса XML» на любые предложения? –
Как вы пытаетесь преобразовать clob в xmltype? –
Фактически XML это BLOB, поэтому я конвертирую его в CLOB с помощью метода DBMS_LOB.converttoclob. Затем с помощью методов DBMS_XMLPARSER.parseclob() и DBMS_XMLPARSER.getDocument() создайте DBMS_XMLDOM.DOMDocument. После этого только я использую пакет DBMS_XMLDOM для синтаксического анализа XML и получения значения узла. –