PLSQL中的DOM 解析

由于只是初始学习SQL中使用DOM XML解析解析,很多技术要点尚未掌握。只是按照一些例子来做测试,包括对多字节字符集的问题也没解决。此处只在此做一记录,供以后重新拾起来。

 

 其中主要使用的是xmldom 的几个函数:selectNodesgetNodevalue等。


 

 

点击(此处)折叠或打开

  1. CREATE OR REPLACE PROCEDURE XMLParserTest (a_xmldata CLOB)
  2. IS
  3.    v_parser xmlparser.Parser;
  4.    v_domdocument xmldom.DOMDocument;
  5.    v_domnode xmldom.domnode;
  6.    v_patientnode xmldom.domnode;
  7.    v_domnodelist xmldom.DOMNodeList;
  8.    v_domnodepatientlist xmldom.DOMNodeList;
  9.    v_length NUMBER;
  10.    v_data VARCHAR2 (2000);
  11.    i INTEGER;
  12.    j INTEGER;
  13. BEGIN
  14.    v_parser := xmlparser.newParser;
  15.    xmlparser.parseClob (v_parser, a_xmldata);
  16.    v_domdocument := xmlparser.getDocument (v_parser);
  17.    xmlparser.freeParser (v_parser);
  18.  
  19.    v_domnode := xmldom.makenode (v_domdocument);
  20.    v_domnodelist := xslprocessor.selectNodes (v_domnode, \'/outpbill/patients\'); --/patientid
  21.  
  22.    v_length := xmldom.getLength (v_domnodelist);
  23.    DBMS_OUTPUT.put_line (\'patientS length: \' || TO_CHAR (v_length));
  24.  
  25.    FOR i IN 0 .. v_length - 1
  26.    LOOP
  27.       v_domnodepatientlist :=
  28.          xmldom.getChildNodes (
  29.             xslprocessor.selectSingleNode (xmldom.item (v_domnodelist, i),
  30.                                            \'patientid\'));
  31.  
  32.       FOR j IN 0 .. xmldom.getLength (v_domnodepatientlist) - 1
  33.       LOOP
  34.          /* v_patientnode := xmldom.item(v_domnodepatientlist,j );
  35.               xmldom.writeToBuffer(v_patientnode,v_data);
  36.                       dbms_output.put_line(v_data);*/
  37.  
  38.  
  39.          DBMS_OUTPUT.put_line (
  40.             xmldom.getNodevalue (xmldom.item (v_domnodepatientlist, j)));
  41.       END LOOP;
  42.    END LOOP;
  43. END XMLParserTest;
  44. /
  45.  
  46. SHOW ERROR


点击(此处)折叠或打开

  1. SET SERVEROUTPUT ON
  2.  
  3. DECLARE
  4.    a_xmldata CLOB;
  5. BEGIN
  6.    a_xmldata :=
  7.       \'234NP NIU PAI123fgsJN JINNIU567\';
  8.  
  9.    XMLParserTest (a_xmldata);
  10. END;
  11. /




请使用浏览器的分享功能分享到微信等