voila le code de la procedure pour parser un fichier xml et afficher ses éléments :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.