parsing xml child nodes and inserting into table
377144Jun 24 2005 — edited Jan 5 2011hi all,
I was able to parse a xml document from http url and was able to get some child nodes(printed on dbms_output) in a loop from the document.now I want to insert two child nodes to loop through the documents and place it in the oracle table directly.Can anyone give me a hint or guide me ,,how to do this in pl/sql?
HERE IS MY CODE
CREATE OR REPLACE PACKAGE BODY XRATESDLOAD AS
PROCEDURE XRATESDLOADP
IS
--lv_RatesTable utl_http.html_pieces;
--lv_start_pos number := 0;
--lv_record_ind varchar2(1) := 'N';
orderURL VARCHAR2(80);
parser xmlparser.Parser;
orderXML xmldom.DOMDocument;
csymbol xmldom.DOMNodeList;
crate xmldom.DOMNodeList;
orders_found NUMBER;
curNode xmldom.DOMNode;
curNode2 xmldom.DOMNode;
textName xmldom.DOMNode;
textName2 xmldom.DOMNode;
begin
dbms_output.put_line( 'BEFORE Orders processed on '||to_char(sysdate, 'YYYY-MON-DD'));
--orderURL := 'http://www.xe.com/dfs/sample-gbp.xml';
parser := xmlparser.newParser ;
--orderXML := xmlparser.parse( orderURL );
xmlparser.parse( parser,'http://www.xe.com/dfs/sample-gbp.xml' );
orderXML := xmlparser.getDocument(parser);
xmlparser.freeParser( parser );
dbms_output.put_line( 'Orders processed on '||to_char(sysdate, 'YYYY-MON-DD'));
csymbol := xmldom.getElementsByTagName( orderXML, 'csymbol' );
crate := xmldom.getElementsByTagName( orderXML, 'crate' );
-- loop for customer
for x in 1..xmldom.getLength(csymbol) loop
--for x in 1..10 loop
curNode := xmldom.item(csymbol, x-1 );
textName := xmldom.getFirstChild( curNode );
dbms_output.put_line( 'Currency Symbol: '||xmldom.getNodeValue( textName ) );
curNode2 := xmldom.item(crate, x-1 );
textName2 := xmldom.getFirstChild( curNode2 );
dbms_output.put_line( 'Currency Rate: '||xmldom.getNodeValue( textName2 ) );
--HERE AM TRYING TO INSERT THE NODES DIRECTLY INTO TABLE CNA_XRATES_TEXT BUT ITS NOT WORKING LIKE THIS..?
--insert into cna_xrates_text values(xmldom.getNodeValue( textName ),xmldom.getNodeValue( textName2 ));
-- loop within the order to get products ordered
-- for y in 1..get loop
-- end loop;
end loop;
xmldom.freeDocument( orderXML );
END XRATESDLOADP;
END XRATESDLOAD;
/