PLSQL中的DOM 解析

guoge發表於2015-01-05

由於只是初始學習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. /




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9036/viewspace-1390319/,如需轉載,請註明出處,否則將追究法律責任。

相關文章