我有XML文件,该文件存储在DB表的clob列中。

<?xml version="1.0" encoding="UTF-8"?>
<document>
  <row>
    <organization>asdklfjas;kldfj;LASKJFAS</organization>
    <phones>sjhdfhjaghjskfg</phones>
    <persons>hkjg</persons>
  </row>
</document>


我正在使用DBMS_XMLDOM包进行解析。

declare
  v_clob clob;
  v_doc dbms_xmldom.domdocument;
begin
  ...
  v_doc := dbms_xmldom.newdomdocument(v_clob);
  v_domelement := dbms_xmldom.getdocumentelement(v_doc);
  ...
end;


我只需要从某些元素(例如<persons>)中获取价值。我该怎么做?

最佳答案

还可以选择将XslProcessor函数与XPath一起使用:

DECLARE
  v_Clob CLOB;
  v_Doc XmlDom.DomDocument;
  v_RootNode XmlDom.DomNode;
  v_Value VARCHAR2(128);
BEGIN
  ...

  v_Doc := XmlDom.NewDomDocument(v_Clob);
  v_RootNode := XmlDom.MakeNode(XmlDom.GetDocumentElement(v_Doc));
  v_Value := XmlDom.GetNodeValue(
    XslProcessor.SelectSingleNode(v_RootNode, '/document/row[1]/persons/text()'));

  ...
END;

07-28 01:39
查看更多