Bonjours je suis un novice en langage 4D et je bloque présentement sur l'extraction des données à partir d'un fichier XML.
je m'explique ,j'ai un fichier XML dans lequel je compte parcourir en une seule fois dans une boucle afin de stocker les donner dont j'ai besoin dans un tableau sauf que je bloque sur une ligne de mon fichier XML voici le fichier XML en question ci-dessous et le code que j'ai présentement réussi à faire.
Fichier XML
Code xml : 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
41
42
43
44
45
46
47
48
49 ?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <cis:sentences xmlns:cis="http://ws.synodos.cismef.org/"> <cis:sentence iddoc="0" idpatient="0" idsentence="0"> <cis:text>DIABETE</cis:text> <cis:indexations> <cis:indexation end="7" idcismef="HPO_TE_HP:0000819" idterm="HP:0000819" offset="0" start="0" ter="HPO"> <cis:term> <cis:label lang="fr">diabète</cis:label> </cis:term> <cis:categorization/> </cis:indexation> <cis:indexation end="7" idcismef="MSH_D_003920" idterm="D003920" offset="0" start="0" ter="MSH" umlscui="C0011849"> <cis:term> <cis:label lang="fr">diabète</cis:label> </cis:term> <cis:categorization> <cis:category idcategory="MT11" idcismef="CIS_MT_11" origin="cismef"> <cis:label lang="fr">endocrinologie</cis:label> </cis:category> <cis:category idcategory="MT122" idcismef="CIS_MT_122" origin="cismef"> <cis:label lang="fr">métabolisme</cis:label> </cis:category> <cis:category idcategory="DISO" idcismef="UML_SG_DISO" origin="umls"> <cis:label lang="fr">Troubles</cis:label> </cis:category> <cis:category idcategory="T047" idcismef="UML_ST_T047" origin="umls"> <cis:label lang="fr">maladie ou syndrome</cis:label> </cis:category> </cis:categorization> </cis:indexation> <cis:indexation end="7" idcismef="NCI_CO_C2985" idterm="C2985" offset="0" start="0" ter="NCI" umlscui="C0011849"> <cis:term> <cis:label lang="fr">diabète</cis:label> </cis:term> <cis:categorization> <cis:category idcategory="DISO" idcismef="UML_SG_DISO" origin="umls"> <cis:label lang="fr">Troubles</cis:label> </cis:category> <cis:category idcategory="T047" idcismef="UML_ST_T047" origin="umls"> <cis:label lang="fr">maladie ou syndrome</cis:label> </cis:category> </cis:categorization> </cis:indexation> </cis:indexations> </cis:sentence> </cis:sentences>
Code que j'ai réalisé
je me demande pas si je m'y prends très mal ?
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 C_TEXTE($1;$DataXml) C_ENTIER LONG($nbElement) $DataXml:=$1 //donné XML $Ref:=$2 //Référence du fichier //Variable C_TEXTE($xData) //Variable temporaire de parcourd C_TEXTE(xmlLng) //Variable de langue TABLEAU TEXTE(xmlTermes;50) //Tableau des Termes TABLEAU TEXTE(xmlCategorie;50) //Tableau categorie TABLEAU TEXTE(xmlIDMaladie;50) //tableau Id Maladie TABLEAU TEXTE(xmlIDTermes;50) //tableau Id Termes //Extract XML $Compter_Ref:=DOM Compter elements XML($Ref;"cis:sentence") Boucle ($i;1;$Compter_Ref) //Parcourd d'en-tête $xml_Tmp:=DOM Lire element XML($Ref;"cis:sentence";$i;$xData) $xml_Tmp:=DOM Lire element XML($xml_Tmp;"cis:indexations";1;$xData) $xml_Tmp:=DOM Lire element XML($xml_Tmp;"cis:indexation";1;$xData) //Recuperation des première DATA $xml_TmpAttA:=DOM LIRE ATTRIBUT XML PAR NOM($xml_Tmp;"idcismef";xmlIDMaladie{0}) //recuperations de id maladie $xml_TmpAttB:=DOM LIRE ATTRIBUT XML PAR NOM($xml_Tmp;"idterm";xmlIDTermes{0}) //recuperation de id du terme $xml_Tmp:=DOM Lire element XML($xml_Tmp;"cis:term";1;$xData) //Récuperation de la reference suivantes $xml_Tmp:=DOM Lire element XML($xml_Tmp;"cis:label";1;xmlTermes{0}) //Recuperation du terme $xml_TmpAttA:=DOM LIRE ATTRIBUT XML PAR NOM($xml_Tmp;"lang";xmlLng) //Recuperation de la langue //$xml_Tmp:=DOM Lire element XML($xml_Tmp;"cis:categorization";1;$xData{1}) //Ligne ou ça bloque Fin de boucle, cependant je serais ravi d'avoir vos remarques suggestions
merci et à bientôt
Partager