我的数据库是Oracle9.0.1.1.1的版本,从网上下的解析XML一个例子,编译时报错:pls-00201:必须说明标识符'xmlParser',以及'xmldom',是不是9.0.1.1.1不支持啊!如果不支持这两个包,有什么办法在这个版本中解析XML,请高人指教!

解决方案 »

  1.   

    我现在也正在做一个把xml文件的内容导入oracle数据库中去,具体内容如下:我建了一个xml文件如下:放在“C:\xml”下:名称为people.xml 
    <?xml version="1.0"?> 
    <PEOPLE> 
        <PERSON PERSONID="E01"> 
            <NAME>Tony Blair </NAME> 
            <ADDRESS>10 Downing Street, London, UK </ADDRESS> 
            <TEL>(061) 98765 </TEL> <FAX>(061) 98768 </FAX> 
            <EMAIL>[email protected] </EMAIL> 
        </PERSON> 
        <PERSON PERSONID="E02"> 
            <NAME>Bill Clinton </NAME> 
            <ADDRESS>White House, USA </ADDRESS> 
            <TEL>(001) 6400 98765 </TEL> <FAX>(001) 6400 98769 </FAX> 
            <EMAIL>[email protected] </EMAIL> 
        </PERSON> 
        <PERSON PERSONID="E03"> 
            <NAME>Tom Cruise </NAME> 
            <ADDRESS>57 Jumbo Street, New York, USA </ADDRESS> 
            <TEL>(001) 4500 67859 </TEL> <FAX>(001) 4500 67895 </FAX> 
            <EMAIL>[email protected] </EMAIL> 
        </PERSON> 
        <PERSON PERSONID="E04"> 
            <NAME>Linda Goodman </NAME> 
            <ADDRESS>78 Crax Lane, London, UK </ADDRESS> 
            <TEL>(061) 54 56789 </TEL> <FAX>(061) 54 56772 </FAX> 
            <EMAIL>[email protected] </EMAIL> 
        </PERSON> 
    </PEOPLE> 在数据库中建表: 
    CREATE TABLE PEOPLE 

        PERSONID VARCHAR2(10) PRIMARY KEY, 
        NAME VARCHAR2(20), 
        ADDRESS VARCHAR2(60), 
        TEL  VARCHAR2(20), 
        FAX  VARCHAR2(20), 
        EMAIL VARCHAR2(40) 
    ); 我将xml文件导入数据库的代码如下: 
    create or replace procedure xml2table(dir varchar2, inpfile varchar2, 
                                          errfile varchar2) is 
    -- 參數說明: 
    -- dir      基本目錄,如 'd:\xml\plsql' 
    -- inpfile  輸入檔案名,不含路徑,如 'people.xml' 
    -- errfile  錯誤日誌檔,保存解析錯誤資訊, 如 'err.log' 
    p xmlparser.parser; 
    doc xmldom.DOMDocument; 
    -- 讀取並處理文檔元素 
    procedure readElements(doc xmldom.DOMDocument) is 
      nl    xmldom.DOMNodeList; 
      len    number; 
      n      xmldom.DOMNode; 
      attn  xmldom.DOMNode; 
      nnm    xmldom.DOMNamedNodeMap; 
      nl2    xmldom.DOMNodeList; 
      len2  number; 
      strSQL varchar2(1000); 
    begin 
      -- 讀取 PERSON 元素 
      nl := xmldom.getElementsByTagName(doc, 'PERSON'); 
      len := xmldom.getLength(nl); 
      -- 遍曆元素 
      for i in 0..len-1 loop 
          -- 構造動態 SQL 語句 
          strSQL := 'INSERT INTO PEOPLE VALUES ('; 
          n := xmldom.item(nl, i); 
          if xmldom.getNodeName(n)='PERSON' then 
            nnm := xmldom.getAttributes(n);  -- 讀取 PERSONID 屬性 
            attn := xmldom.item(nnm, 0); 
            strSQL := strSQL ¦ ¦ '''' ¦ ¦ xmldom.getNodeValue(attn) ¦ ¦ ''''; 
          end if; 
          -- 讀取 PERSON 的子節點 
          nl2 := xmldom.getChildNodes(n); 
          len2 := xmldom.getLength(nl2); 
          -- 處理 NAME, ADDRESS, ... 等節點 
          for j in 0..len2-1 loop 
            n := xmldom.item(nl2, j); 
            strSQL := strSQL ¦ ¦ ', ''' ¦ ¦ xmldom.getNodeValue(xmldom.getFirstChild(n)) ¦ ¦ ''''; 
          end loop; 
          -- 完成 動態 SQL 語句的構造 
          strSQL := strSQL ¦ ¦ ')'; 
          -- dbms_output.put_line(strSQL); 
          -- 執行插入記錄的 SQL 語句 
          execute immediate(strSQL);  -- 執行動態 SQL 
      end loop; 
      commit;  -- 提交插入 
      dbms_output.put_line(''); 
    end readElements; 
    begin 
    -- 新建解析器實例 
      p := xmlparser.newParser; 
    -- 設置解析器特性 
      xmlparser.setValidationMode(p, FALSE); 
    --  xmlparser.setErrorLog(p, dir ¦ ¦ '\' ¦ ¦ errfile); 
      xmlparser.setBaseDir(p, dir); 
    -- 解析輸入檔 
      xmlparser.parse(p, dir ¦ ¦ '\' ¦ ¦ inpfile); 
    -- 獲取解析後的文檔對象 
      doc := xmlparser.getDocument(p); 
    -- 讀取文檔元素 
      dbms_output.put_line('讀取文檔元素並保存到表 PEOPLE 中.'); 
      readElements(doc); 
    -- 釋放資源 
      xmldom.freeDocument(doc); 
    end xml2table; 运行时老是提示:ora-20100: error occurred while parsing: no such file or directory.还有ora-06512等错误。 我在网上找了原因,可能是因为我的文件放在自己的电脑上,而我的oracle数据库放在服务器上,我又不能登陆服务器,真不知道该如何解决这个问题。 郁闷中....我用的就是Oracle Provider for OLE DB 9.0.1.0.1
    希望搂主能有启发,也希望我能够很快实现导入数据库。
      

  2.   

    $ORACLE_HOME/xdk下面应该有相关包你的版本我不太清楚,也许是
    $ORACLE_HOME\xdk\admin\xmldomi.sql,--xmldom
    $ORACLE_HOME\xdk\admin\xmlload.sql,--xmlParser