| PL/SQL XMLTYPE vs dbms_xslprocessor |
[Oct. 26th, 2011|04:55 pm] |
Oracle PL/SQL XMLTYPE tomēr ir ērtāks par dbms_xmldom + dbms_xmlparser + dbms_xslprocessor Ir pat divi vienlīdz labi varianti, izmantojot XMLTYPE.
1. Ar bulciņu un cikliņu
DECLARE
TYPE xmltype_table IS TABLE OF XMLTYPE INDEX BY PLS_INTEGER;
XML_tab xmltype_table;
v_xml XMLTYPE;
v_clob CLOB;
v_val VARCHAR2(100);
BEGIN
--Prepare xml
v_clob := '<root>
<many><t>11</t></many>
<many><t>22</t></many>
<many><t>33</t></many>
</root>';
v_xml := xmltype(v_clob);
--Do the xml
SELECT VALUE(xm) xmlt BULK COLLECT
INTO XML_tab
FROM TABLE(xmlsequence(v_xml.extract('/root/many'))) xm;
FOR i IN 1 .. XML_tab.count LOOP
v_val := XML_tab(i).extract('/many/t/text()').getStringval();
dbms_output.put_line(v_val);
END LOOP;
END;
2. Ar cikliņu pa taisno.
DECLARE
v_xml XMLTYPE;
v_clob CLOB;
v_val VARCHAR2(100);
BEGIN
--Prepare xml
v_clob := '<root>
<many><t>11</t></many>
<many><t>22</t></many>
<many><t>33</t></many>
</root>';
v_xml := xmltype(v_clob);
--Do the xml
FOR x IN (SELECT VALUE(xm) xmlt
FROM TABLE(xmlsequence(v_xml.extract('/root/many'))) xm) LOOP
v_val := x.xmlt.extract('/many/t/text()').getStringval();
dbms_output.put_line(v_val);
END LOOP;
END;
|
|
|