I have been able to parse an xml doc from a URL, however I need some help with how to loop within the document.
It is very straightforward - i have an orders xml doc that can have multiple line items. The doc is like:
<ORDERS>
<ORDER>
<DATE>2004-10-12 11:30:07</DATE>
<ID>957</ID>
<NAME>John Doe</NAME>
<COMPANY>none</COMPANY>
<STREET>100 Elm Street</STREET>
<SUBURB />
<CITY>Pittsburgh</CITY>
<STATE>PA</STATE>
<ZIP>15222</ZIP>
<COUNTRY>United States</COUNTRY>
<ORDERINFO>
<QUANTITY>1</QUANTITY>
<MODEL>76</MODEL>
<PRODUCT>Cooler Organizer(tm)</PRODUCT>
<QUANTITY>5</QUANTITY>
<MODEL>87</MODEL>
<PRODUCT>Chrome CupHolder</PRODUCT>
</ORDERINFO>
</ORDER>
</ORDERS>
So I need to be able to loop within the <ORDERINFO> and pick up the multiple line items for the customers order.
I have a PLSQL block that i'm working with that does the trick except I do not have the ORDERINFO looping in yet - that's where I need help. Here is my code:
declare
orderURL VARCHAR2(80);
parser xmlparser.Parser;
orderXML xmldom.DOMDocument;
orders xmldom.DOMNodeList;
orders_found NUMBER;
curNode xmldom.DOMNode;
textName xmldom.DOMNode;
begin
dbms_output.put_line( 'Orders processed on '||to_char(sysdate, 'YYYY-MON-DD'));
orderURL := 'http://localhost:7777/xml.php';
parser := xmlparser.newParser ;
orderXML := xmlparser.parse( orderURL );
xmlparser.freeParser( parser );
orders := xmldom.getElementsByTagName( orderXML, 'NAME' );
-- loop for customer
for x in 1..xmldom.getLength(orders) loop
curNode := xmldom.item( orders, x-1 );
textName := xmldom.getFirstChild( curNode );
dbms_output.put_line( 'Customer: '||xmldom.getNodeValue( textName ) );
-- loop within the order to get products ordered
-- for y in 1..get loop
-- end loop;
end loop;
xmldom.freeDocument( orderXML );
end;
/
Thanks in advance !!