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.
Avec ça, aucun souci, je fais bien une lecture séquentielle du fichier.
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 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;
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 !
Partager