people.xml
1 <?xml version="1.0"?>
2 <PEOPLE>
3 <PERSON PERSONID="E01">
4 <NAME>Tony Blair</NAME>
5 <ADDRESS>10 Downing Street, London, UK</ADDRESS>
6 <TEL>(061) 98765</TEL>
7 <FAX>(061) 98768</FAX>
8 <EMAIL>blair@everywhere.com</EMAIL>
9 </PERSON>
10 <PERSON PERSONID="E02">
11 <NAME>Bill Clinton</NAME>
12 <ADDRESS>White House, USA</ADDRESS>
13 <TEL>(001) 6400 98765</TEL>
14 <FAX>(001) 6400 98769</FAX>
15 <EMAIL>bill@everywhere.com</EMAIL>
16 </PERSON>
17 <PERSON PERSONID="E03">
18 <NAME>Tom Cruise</NAME>
19 <ADDRESS>57 Jumbo Street, New York, USA</ADDRESS>
20 <TEL>(001) 4500 67859</TEL>
21 <FAX>(001) 4500 67895</FAX>
22 <EMAIL>cruise@everywhere.com</EMAIL>
23 </PERSON>
24 <PERSON PERSONID="E04">
25 <NAME>Linda Goodman</NAME>
26 <ADDRESS>78 Crax Lane, London, UK</ADDRESS>
27 <TEL>(061) 54 56789</TEL>
28 <FAX>(061) 54 56772</FAX>
29 <EMAIL>linda@everywhere.com</EMAIL>
30 </PERSON>
31 </PEOPLE>
鎴戜互scott鐢ㄦ埛涓轟緥錛屾柊寤鴻〃錛?br />
1 CREATE TABLE PEOPLE
2 (
3 PERSONID VARCHAR2(4) PRIMARY KEY,
4 NAME VARCHAR2(50),
5 ADDRESS VARCHAR2(200),
6 TEL VARCHAR2(20),
7 FAX VARCHAR2(20),
8 EMAIL VARCHAR2(100)
9 );
鍋囪琛ㄩ噷闈㈠凡緇忔湁鏁版嵁錛屽鏋滄兂浠嶺ML鎻掑叆鏁版嵁璇風湅銆愬師鍒涖戠紪鍐橭racle瀛樺偍榪囩▼瑙f瀽XML錛屽茍鎶婃暟鎹寔涔呭寲
浠ヤ笅鏄妸鏌ヨ緇撴灉鐢熸垚XML鏂囦歡鐨勫瓨鍌ㄨ繃紼嬩唬鐮侊細
1 /**
2 *sqlStr 闄勫姞鐨勬煡璇㈡潯浠?nbsp;濡傦細where PERSONID = 'E01',鏌ヨ鎵鏈夎緭鍏?'
3 *file_path 鏂囦歡淇濆瓨璺緞 濡傦細D:\OracleTest\outpeople.xml
4 **/
5 CREATE OR REPLACE PROCEDURE OUTPUTPEOPLE(sqlStr VARCHAR2,file_path VARCHAR2)
6 AS
7 personRow PEOPLE%ROWTYPE; --鑾峰彇娓告爣鐨勮鍙橀噺
8 TYPE person_cur IS REF CURSOR; --鑷畾涔塕EF娓告爣
9 cur person_cur;
10 tempSql varchar2(500) := 'SELECT * FROM PEOPLE '; --鍒濆鐨勬煡璇㈣鍙?/span>
11 doc xmlDom.DOMDocument := xmldom.newDOMDocument; -- 鍒涘緩鏂囨。瀵硅薄
12 main_node xmlDom.DOMNode := xmldom.makeNode(doc); -- 鑾峰緱鏂囨。鑺傜偣
13 root_elmt xmlDom.DOMElement:= xmldom.createElement(doc, 'PEOPLE'); -- 鍒涘緩鏍瑰厓绱?/span>
14 --==================================================
15 --浠ヤ笅瀹氫箟鍏冪礌
16 person_elmt xmlDom.DOMElement; --瀹氫箟PERSON鍏冪礌
17 name_elmt xmlDom.DOMElement; --瀹氫箟NAME鍏冪礌
18 address_elmt xmlDom.DOMElement; --瀹氫箟ADDRESS鍏冪礌
19 tel_elmt xmlDom.DOMElement; --瀹氫箟TEL鍏冪礌
20 email_elmt xmlDom.DOMElement; --瀹氫箟EMAIL鍏冪礌
21 --==================================================
22 --浠ヤ笅瀹氫箟鑺傜偣
23 root_node xmlDom.DOMNode; --瀹氫箟PEOPLE鑺傜偣
24 person_node xmlDom.DOMNode; --瀹氫箟PERSON鑺傜偣
25 name_node xmlDom.DOMNode; --瀹氫箟NAME鑺傜偣
26 address_node xmlDom.DOMNode; --瀹氫箟ADDRESS鑺傜偣
27 tel_node xmlDom.DOMNode; --瀹氫箟TEL鑺傜偣
28 email_node xmlDom.DOMNode; --瀹氫箟EMAIL鑺傜偣
29 temp_node xmlDom.DOMNode;
30 BEGIN
31 -- 鍚戞枃妗h妭鐐瑰姞鍏ユ牴鑺傜偣:<PEOPLE></PEOPLE>
32 root_node := xmldom.appendChild(main_node, xmldom.makeNode(root_elmt));
33 --闄勫姞鏌ヨ鏉′歡
34 tempSql := tempSql||sqlStr;
35 --鎵撳紑娓告爣
36 OPEN cur FOR tempSql;
37 --閬嶅巻娓告爣
38 LOOP
39 FETCH cur INTO personRow;
40 EXIT WHEN cur%NOTFOUND;
41 --===========================================================================--
42 person_elmt := xmldom.createElement(doc, 'PERSON'); --鍒涘緩PERSON鍏冪礌
43 -- 鍚慞EOPLE鑺傜偣鍔犲叆PERSON鑺傜偣<PERSON></PERSON>
44 person_node := xmldom.appendChild(root_node, xmldom.makeNode(person_elmt));
45 --===========================================================================--
46 --鍚慞ERSON鑺傜偣鍔犲叆灞炴ERSONID
47 xmlDom.SETATTRIBUTE( person_elmt, 'PERSONID', personRow.personId );
48 --===========================================================================--
49 name_elmt := xmldom.createElement(doc, 'NAME'); --鍒涘緩NAME鍏冪礌
50 --鍚慞ERSON鑺傜偣鍔犲叆瀛愯妭鐐筃AME
51 name_node := xmldom.appendChild(person_node,xmlDom.makeNode(name_elmt));
52 --鍚慛AME鑺傜偣鍔犲叆鏂囨湰
53 temp_node := xmldom.appendChild(name_node , xmlDom.makeNode(xmldom.createTextNode(doc,personRow.name)));
54 --===========================================================================--
55 address_elmt := xmldom.createElement(doc, 'ADDRESS'); --鍒涘緩ADDRESS鍏冪礌
56 --鍚慞ERSON鑺傜偣鍔犲叆瀛愯妭鐐笰DDRESS
57 address_node := xmldom.appendChild(person_node,xmlDom.makeNode(address_elmt));
58 --鍚慉DDRESS鑺傜偣鍔犲叆鏂囨湰
59 temp_node := xmldom.appendChild(address_node, xmlDom.makeNode(xmldom.createTextNode(doc,personRow.address)));
60 --===========================================================================--
61 tel_elmt := xmldom.createElement(doc, 'TEL'); --鍒涘緩TEL鍏冪礌
62 --鍚慣EL鑺傜偣鍔犲叆瀛愯妭鐐筃AME
63 tel_node := xmldom.appendChild(person_node,xmlDom.makeNode(tel_elmt));
64 --鍚慣EL鑺傜偣鍔犲叆鏂囨湰
65 temp_node := xmldom.appendChild(tel_node, xmlDom.makeNode(xmldom.createTextNode(doc,personRow.tel)));
66 --===========================================================================--
67 email_elmt := xmldom.createElement(doc, 'EMAIL'); --鍒涘緩EMAIL鍏冪礌
68 --鍚慞ERSON鑺傜偣鍔犲叆瀛愯妭鐐笶MAIL
69 email_node := xmldom.appendChild(person_node,xmlDom.makeNode(email_elmt));
70 --鍚慐MAIL鑺傜偣鍔犲叆鏂囨湰
71 temp_node := xmldom.appendChild(email_node, xmlDom.makeNode(xmldom.createTextNode(doc,personRow.email)));
72 --===========================================================================--
73 END LOOP;
74 CLOSE cur;
75 --鍐欏叆紜洏
76 xmlDom.writeToFile(doc,file_path,'GBK');
77 EXCEPTION
78 WHEN OTHERS THEN
79 DBMS_output.PUT_LINE(SQLERRM);
80 END OUTPUTPEOPLE;

]]>