voila le code de la procedure pour parser un fichier xml et afficher ses éléments :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| PROCEDURE DOMSAMPLE (dir VARCHAR2, inpfile VARCHAR2, errfile VARCHAR2)
IS
p xmlparser.parser;
doc xmldom.domdocument;
-- prints elements in a document
PROCEDURE printelements (doc xmldom.domdocument)
IS
nl xmldom.domnodelist;
len NUMBER;
n xmldom.domnode;
BEGIN
-- get all elements
nl := xmldom.getelementsbytagname (doc, '*');
len := xmldom.getlength (nl);
-- loop through elements
FOR i IN 0 .. len - 1
LOOP
n := xmldom.item (nl, i);
DBMS_OUTPUT.put (xmldom.getnodename (n) || ' ');
END LOOP;
DBMS_OUTPUT.put_line ('');
END printelements;
BEGIN
-- new parser
p := xmlparser.newparser;
xmlparser.setvalidationmode (p, FALSE);
xmlparser.setbasedir (p, dir);
xmlparser.parse (p, 'C:\TEMP\TEST.xml');
doc := xmlparser.getdocument (p);
DBMS_OUTPUT.put ('The elements are: ');
printelements (doc);
EXCEPTION
WHEN xmldom.index_size_err
THEN
DBMS_OUTPUT.put (' !! ');
-- raise_application_error (-20120, 'Index Size error');
END domsample; |
sans tenir compte de fichier .log, l'execution de la procedure génére une exception
xmlparser.parse (p, 'C:\TEMP\TEST.xml');
et ne se termine pas. j'ai donné le chemin en dur. mais se ne marche plus.
Merci pour votre aide.
Partager