1
일부 노드 값을 얻기 위해 거대한 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에 있기 때문에 PL/SQL 코드에서 Xquery를 사용하는 것이 어려워 보입니다! 오류는 "XML 구문 분석 실패"와 같은 제안입니까? –
어떻게 clob을 xmltype로 변환하려고합니까? –
실제로 XML이므로 BLOB이므로 DBMS_LOB.converttoclob 메소드를 사용하여 CLOB로 변환합니다. 그런 다음 DBMS_XMLPARSER.parseclob() 및 DBMS_XMLPARSER.getDocument() 메서드를 사용하여 DBMS_XMLDOM.DOMDocument를 만듭니다. 그 후에는 DBMS_XMLDOM 패키지를 사용하여 XML을 구문 분석하고 노드 값을 검색합니다. –