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

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

热度:7550   发布时间:2013-02-26 00:00:00.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 语句 
STRSQL := 'INSERT INTO PEOPLE VALUES (';
N := XMLDOM.ITEM(NL, I);
IF XMLDOM.GETNODENAME(N) = 'PERSON' THEN
NNM := XMLDOM.GETATTRIBUTES(N); -- 读取 PERSONID 属性 
  相关解决方案