Sur cet échantillon d'XML, mon code ne récupére que les enregistrements dont le cycle (NoCyc = 01) et jamais 02, 03 etc
<debut>
<ani>
<ent> bla bla </>
<ref> bla bla </>
<cyc NoCyc = "01">
<sai> bla bla </>
<mba> bla bla </>
<sev> bla bla </>
</cyc>
<cyc NoCyc = "02">
<sai> bla bla </>
<mba> bla bla </>
<sev> bla bla </>
</cyc>
<cyc NoCyc = "03">
<sai> bla bla </>
<mba> bla bla </>
<sev> bla bla </>
</cyc>
</ani>
</debut>
Mon code lançant le XML-INTO utilise une DS comprenant toute la chaine
depuis ANI jusqu'à CYC via des DS imbriquées.
DANIDS ds Qualified
D NoNat 16 Numéro national
D DateNaiss 10 Date de naissance
D xxx 1 xxx M/F/C/I/H
D NoOrig 20 Numéro origine
D Ctg 5 Code type génétique
D NoNatPere 16 Numéro nat. père
D CtgPere 5 CTG du père
D NoNatMere 16 Numéro nat. mère
D CtgMere 5 CTG de la mère
D TetinesDB 2s 0 Tétines droites b.
D TetinesGB 2s 0 Tétines gauches b.
D Halothane 3 Génotype Halothane
D StatutRep 1 Statut verrat E/P/C
D CtgNaiss 5 CTG naissance
D CtgRep 5 CTG reproducteur
D FiliaPere 1 Code filiation père
D FiliaMere 1 Code filiation mère
D IDE likeds(IDEDS)
D ENT likeds(ENTDS)
D REF likeds(REFDS)
D CYC likeds(CYCDS) dim(5)
En fait je souhaiterais savoir comment lire ce type d'imbrication
<COORD>
---<ANI> (de 0 à n occurences)
---<IDE> (de 0 à n occurences)
---<ENT> (de 0 à 1 occurence)
---<REF> (de 0 à 1 occurence)
---<CYC> (de 0 à n occurences)
------<SAI> (de 0 à n occurence)
etc ...
H Option(*NoDebugIO : *SrcStmt )
D VSIGTTT DS Qualified
D VersVsi 5a
D Concepteur 3a
D VersConcept 2a
D TypeEnvoi 3a
D TypeInfo 10a
D Periode 10a
D Module 10a
D DtHrPrepar 26a
D COORD LikeDS(COORD)
D COORD DS Qualified
D TypeCoord 5a
D Pays 2a
D Identif 5a
D RaisonSoc 30a
D Adresse1 50a
D CdPostal 5a
D ComLibelle 50a
D Responsable 30a
D ANI LikeDS(ANI) Dim(50)
D NbrANI 10i 0
D SVP LikeDS(SVP) Dim(100)
D NbrSVP 10i 0
D SVP DS Qualified
D PoupCode 10a
D DateSev 10a
D NbSev 3a
D NbAd 3a
D NbRe 3a
D AgeSev 2a
D PdsSev 10a
D NoBande 5a
D DateAd 10a
D AgeAd 2a
D ANI DS Qualified
D NoNat 20a
D DateNaiss 10a
D xxx 1a
D Ctg 5a
D StatutRep 1a
D ENT LikeDS(ENT)
D REF LikeDS(REF)
D CYC LikeDS(CYC) Dim(100)
D NbrCYC 10i 0
D ENT DS Qualified
D DateEntrRep 10a
D NoCycleEntr 2a
D DateLivrais 10a
D REF DS Qualified
D DateRef 10a
D ModeSortie 1a
D StatutGest 1a
D CauseRef 5a
D CYC DS Qualified
D NoCyc 2a
D SAI LikeDS(SAI) Dim(50)
D NbrSAI 10i 0
D MBA LikeDS(MBA)
D SEV LikeDS(SEV)
D SAI DS Qualified
D NoSai 2a
D DateSai 10a
D TypeSai 2a
D NoBande 8a
D MBA DS Qualified
D DateMba 10a
D NbNv 2a
D NbMn 2a
D NbMom 2a
D NoBande 8a
D SEV DS Qualified
D NoSev 1a
D DateSev 10a
D NbSev 2a
D NbAd 2a
D NbRe 2a
D AgeSev 2a
D PdsSev 10a
D NoBande 5a
*--------------------------------------------------------------------
D XML_Source S 256a Varying
D Inz('/home/myfile.xml')
D wAni S 5i 0
D wCYC S 5i 0
D wSAI S 5i 0
*--------------------------------------------------------------------
/Free
XML-INTO VSIGTTT %XML(XML_Source: 'case=any +
doc=file +
allowmissing=yes +
allowextra=yes +
countprefix=nbr +
path=VSIGTTT');
dsply VSIGTTT.DtHrPrepar;
dsply VSIGTTT.COORD.Responsable;
For wAni = 1 to VSIGTTT.COORD.NbrAni;
dsply VSIGTTT.COORD.ANI(wAni).NoNat;
For wCYC = 1 to VSIGTTT.COORD.ANI(wAni).NbrCYC;
For wSAI = 1 to VSIGTTT.COORD.ANI(wAni).CYC(wCYC).NbrSAI;
dsply VSIGTTT.COORD.ANI(wAni).CYC(wCYC).SAI(wSAI).DateSai;
EndFor;
EndFor;
EndFor;
Bonjour FabriceF,
J'imagine que depuis ... la solution à été trouvée.
Cependant, en V5R4 Il est possible de se servir d'un Handler au lieu de for...endfor imbriqués.