/* Formatted on 6/19/2016 3:02:05 PM (QP5 v5.126) */ DECLARE var XMLTYPE; doc DBMS_XMLDOM.domdocument; ndoc DBMS_XMLDOM.domnode; docelem DBMS_XMLDOM.domelement; node DBMS_XMLDOM.domnode; childnode DBMS_XMLDOM.domnode; nodelist DBMS_XMLDOM.domnodelist; nodelist2 DBMS_XMLDOM.domnodelist; buf VARCHAR2 (2000); newnode DBMS_XMLDOM.domnode; clonenode DBMS_XMLDOM.domnode; elem DBMS_XMLDOM.domelement; PROCEDURE duyethoiquy (clonenode IN OUT DBMS_XMLDOM.domnode) IS childnode DBMS_XMLDOM.domnode; simpletypechildnodemap DBMS_XMLDOM.domnamednodemap; simpletypeattributenode DBMS_XMLDOM.domnode; BEGIN -- xu ly clonenode nay -- sau do lay may con de duyet tiep -- thay doi node con lev 1.. IF NOT DBMS_XMLDOM.isnull (clonenode) THEN -- xu ly node nay -- thay doi mot vai thuoc tinh cua cay nay simpletypechildnodemap := DBMS_XMLDOM.getattributes (clonenode); simpletypeattributenode := DBMS_XMLDOM.getnameditem (simpletypechildnodemap, 'r'); IF NOT DBMS_XMLDOM.isnull (simpletypeattributenode) THEN DBMS_XMLDOM.setnodevalue (simpletypeattributenode, ''); DBMS_XMLDOM.writetobuffer (simpletypeattributenode, buf); DBMS_OUTPUT.put_line ('attr:' || buf); END IF; IF DBMS_XMLDOM.haschildnodes (clonenode) THEN childnode := DBMS_XMLDOM.getfirstchild (clonenode); --- ghi nhan gia tri WHILE NOT DBMS_XMLDOM.isnull (childnode) LOOP -- xu ly con cua no: duyethoiquy (childnode); childnode := DBMS_XMLDOM.getnextsibling (childnode); ------------------------------------- END LOOP; ELSE -- is leaf -- reset gia tri cua node duoc clone nay roi DBMS_XMLDOM.setnodevalue (clonenode, ''); END IF; END IF; END; BEGIN var := xmltype('<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"> <sheetData> <row r="1"><cr="A1" s="2" t="s"><v>0</v></c><cr="B1" s="2" t="s"><v>0</v></c></row> <row r="3"><cr="A3" s="2" t="s"><v>1</v></c><cr="B3" s="2" t="s"><v>1</v></c></row> </sheetData> </worksheet>'); -- Create DOMDocument handle: ndoc := DBMS_XMLDOM.makenode(DBMS_XMLDOM.getdocumentelement ( DBMS_XMLDOM.newdomdocument (var))); newnode := DBMS_XMLDOM.makenode(DBMS_XMLDOM.getdocumentelement(DBMS_XMLDOM.newdomdocument(xmltype('<row r="2"><cr="A2" s="1" t="s"><v>0</v></c></row>')))); -- ghi vao node nodelist := DBMS_XSLPROCESSOR.selectnodes (ndoc, '/worksheet/sheetData'); IF NOT DBMS_XMLDOM.isnull (nodelist) THEN node := DBMS_XMLDOM.item (nodelist, 0); childnode := DBMS_XMLDOM.getlastchild (node); clonenode := DBMS_XMLDOM.clonenode (childnode, TRUE); -- thay doi node cha duyethoiquy (clonenode); -- DBMS_XMLDOM.writetobuffer (newnode, buf); -- DBMS_OUTPUT.put_line ('LastChild:' || buf); elem := DBMS_XMLDOM.makeelement(DBMS_XMLDOM.appendchild ( node, DBMS_XMLDOM.makenode(DBMS_XMLDOM.makeelement(DBMS_XMLDOM.importnode ( DBMS_XMLDOM.getownerdocument(node), clonenode, --newnode, TRUE))))); END IF; DBMS_XMLDOM.writetobuffer (ndoc, buf); DBMS_OUTPUT.put_line ('After:' || buf); END;
- vi du voi xm;
source share