为什么80%的码农都做不了架构师?>>>
xml version="1.0"?>
<PEOPLE>
<PERSON PERSONID&#61;"E01">
<NAME>Tony BlairNAME>
<ADDRESS>10 Downing Street, London, UKADDRESS>
<TEL>(061) 98765TEL>
<FAX>(061) 98768FAX>
<EMAIL>blair&#64;everywhere.comEMAIL>
PERSON>
<PERSON PERSONID&#61;"E02">
<NAME>Bill ClintonNAME>
<ADDRESS>White House, USAADDRESS>
<TEL>(001) 6400 98765TEL>
<FAX>(001) 6400 98769FAX>
<EMAIL>bill&#64;everywhere.comEMAIL>
PERSON>
<PERSON PERSONID&#61;"E03">
<NAME>Tom CruiseNAME>
<ADDRESS>57 Jumbo Street, New York, USAADDRESS>
<TEL>(001) 4500 67859TEL>
<FAX>(001) 4500 67895FAX>
<EMAIL>cruise&#64;everywhere.comEMAIL>
PERSON>
<PERSON PERSONID&#61;"E04">
<NAME>Linda GoodmanNAME>
<ADDRESS>78 Crax Lane, London, UKADDRESS>
<TEL>(061) 54 56789TEL>
<FAX>(061) 54 56772FAX>
<EMAIL>linda&#64;everywhere.comEMAIL>
PERSON>
PEOPLE>
<PEOPLE>
<PERSON PERSONID&#61;"E01">
<NAME>Tony BlairNAME>
<ADDRESS>10 Downing Street, London, UKADDRESS>
<TEL>(061) 98765TEL>
<FAX>(061) 98768FAX>
<EMAIL>blair&#64;everywhere.comEMAIL>
PERSON>
<PERSON PERSONID&#61;"E02">
<NAME>Bill ClintonNAME>
<ADDRESS>White House, USAADDRESS>
<TEL>(001) 6400 98765TEL>
<FAX>(001) 6400 98769FAX>
<EMAIL>bill&#64;everywhere.comEMAIL>
PERSON>
<PERSON PERSONID&#61;"E03">
<NAME>Tom CruiseNAME>
<ADDRESS>57 Jumbo Street, New York, USAADDRESS>
<TEL>(001) 4500 67859TEL>
<FAX>(001) 4500 67895FAX>
<EMAIL>cruise&#64;everywhere.comEMAIL>
PERSON>
<PERSON PERSONID&#61;"E04">
<NAME>Linda GoodmanNAME>
<ADDRESS>78 Crax Lane, London, UKADDRESS>
<TEL>(061) 54 56789TEL>
<FAX>(061) 54 56772FAX>
<EMAIL>linda&#64;everywhere.comEMAIL>
PERSON>
PEOPLE>
个人学习总结 如果输入的存储地址&#xff0c;则 用 XXX in varchar2,
在xmlparser.parse(xmlPar,XXX);
CREATE OR REPLACE
PROCEDURE P_AddPartPopedom(partPopedom_xml in clob)
as
------------------&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;该存储过程负责存储角色权限&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;---------------------
--//XML解析器
xmlPar XMLPARSER.parser :&#61; XMLPARSER.NEWPARSER;
--//DOM文档对象
doc xmldom.DOMDocument;
len Integer;
personNodes xmldom.DOMNodeList;
chilNodes xmldom.DOMNodeList;
tempNode xmldom.DOMNode;
tempArrMap xmldom.DOMNamedNodeMap;
--&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;
--以下变量用于获取XML节点的值
partNum varchar2(50); --角色编号
menuNum varchar2(50); --菜单编号
operateNum varchar2(50); --操作编号
tmp Integer;
--&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;
BEGIN
xmlPar :&#61; xmlparser.newParser;
xmlparser.parseClob(xmlPar,partPopedom_xml);
doc :&#61; xmlparser.getDocument(xmlPar);
-- 释放解析器实例
xmlparser.freeParser(xmlPar);
personNodes :&#61; xmldom.getElementsByTagName_r(doc, &#39;PARTPOPEDOM&#39;);
len :&#61; xmldom.getLength( personNodes );
--遍历所有PERSON元素
FOR i in 0..len-1
LOOP
--获取第i个
tempNode :&#61; xmldom.item(personNodes, i);
--所有属性
tempArrMap :&#61; xmldom.getAttributes(tempNode);
--获取PERSONID的值
--pid :&#61; xmldom.getNodeValue(xmldom.getNamedItem(tempArrMap,&#39;POPEDOM&#39;));
--获取子元素的值
chilNodes :&#61; xmldom.getChildNodes(tempNode);
tmp :&#61; xmldom.GETLENGTH(chilNodes);
partNum :&#61; xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(chilNodes, 0)));
menuNum :&#61; xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(chilNodes, 1)));
operateNum :&#61; xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(chilNodes, 2)));
--插入数据
INSERT INTO SD_SYS_PARTPOPEDOM VALUES (SEQ_SDSYSPARTPOPEDOM.nextval, partNum, menuNum, operateNum);
COMMIT;
END LOOP;
-- 释放文档对象
xmldom.freeDocument(doc);
EXCEPTION
WHEN OTHERS THEN
DBMS_output.PUT_LINE(SQLERRM);
END P_AddPartPopedom;