Lecture fichier XML avec XMLDOM
Bonjour,
Je suis en train de lire un fichier XML constitué comme suit :
<header>
...
</header>
<lignes>
<ligne>
...
</ligne>
<ligne>
...
</ligne>
</lignes>
Je me pose deux questions :
Comment boucler spécifiquement d'un tag ligne à un autre ?
Comment récupérer des informations spécifiques sur un tag ?
Je m'explique :
J'ai l'information suivante <article quantite="1">, mais quand j'utilise ma fonction getNodeName, ça ne me renvoi que article, pas le reste, comment le récupérer ?
Voici mon code actuel, qui boucle sur tout le fichier XML.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| file_ := SYS.UTL_FILE.FOPEN (Rep , fic, 'r', 32767);
p := SYS.XMLPARSER.newParser;
LOOP
SYS.UTL_FILE.GET_LINE (file_, lig);
d_xml := d_xml || lig;
END LOOP;
SYS.XMLPARSER.parseBuffer (p, D_Xml);
Doc := SYS.XMLPARSER.getDocument (p);
nl := SYS.XMLDOM.getElementsByTagName (doc, '*');
len := SYS.XMLDOM.getLength (nl);
FOR i IN 0..len-1 LOOP
n := SYS.XMLDOM.item(nl, i);
Nom_Tag := SYS.XMLDOM.getNodeName(n);
n := SYS.XMLDOM.getFirstChild(n);
IF SYS.XMLDOM.getNodeType(n) = 3 THEN
Val := SYS.XMLDOM.getNodeValue(n);
END IF;
END LOOP; |
Avec ça, aucun souci, je fais bien une lecture séquentielle du fichier.
L'idée que j'ai eu c'est de faire une boucle dans celle de la lecture du nœud, qui bouclera d'un tag item à un autre.
Mais je n'ai pas réussi à la mettre en œuvre, et je ne sais pas si je pars sur la bonne chose ...
Je suis preneur de toute idée.
Merci d'avance !