当前位置: 代码迷 >> Oracle认证考试 >> 怎样把XML文件保存到Oracle database?解决方案
  详细解决方案

怎样把XML文件保存到Oracle database?解决方案

热度:292   发布时间:2016-04-24 03:50:36.0
怎样把XML文件保存到Oracle database?
把一个XML文件在Treeview里展现出来,然后怎样把treeview里的信息保存到Oracle database?
------解决方案--------------------
 .net里面treeview控件?   treeview里的信息保存到Oracle database, 就是把XML 保存到oracle  
二种方法: 1.把XML作为文本存入数据库. 然后当做字符串操作, 取其你想要的值

2.就是oracle解析XML  .这个网上有资料: 给你一些参考:
http://bbs.xml.org.cn/dispbbs.asp?boardID=17&ID=35861

如果是程序里实现的话.到C# 或.net 版块去问吧. 有一个类操作:
OracleXMLSave   sav   =   new   OracleXMLSave(conn,   "temp_dd_cs03");   
  sav.insertXML(sav.getURL("emp.xml"));   


------解决方案--------------------
用Oracle内置包
------解决方案--------------------
呵呵,一个问题居然问了好几个帖子,你看看我另外一个回复呢?有没有解决你的问题。
------解决方案--------------------
学习了。
------解决方案--------------------
完整的方法如下:
CREATE DIRECTORY test AS 'c:\';
GRANT WRITE ,READ ON DIRECTORY test TO yourUser;

 
emp.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>blair@everywhere.com </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>bill@everywhere.com </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>cruise@everywhere.com </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>linda@everywhere.com </EMAIL> 
    </PERSON> 
</PEOPLE> 
 


 
CREATE TABLE PEOPLE 

    PERSONID VARCHAR2(10), 
    NAME VARCHAR2(20), 
    ADDRESS VARCHAR2(60), 
    TEL  VARCHAR2(20), 
    FAX  VARCHAR2(20), 
    EMAIL VARCHAR2(40) 
); 

CREATE OR REPLACE PROCEDURE XML2TABLE(DIR     VARCHAR2,
                                      INPFILE VARCHAR2 ) IS
  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 语句 
  相关解决方案