XMLTABLE : ne recevoir que la(les) première(s) valeur(s)
Posté : lun. 10 févr. 2014, 16:59:35
Bonjour,
Mon but est de rechercher et d'extraire des valeurs contenues dans certaines balises d'un fichier xml. Certaines de ces balises peuvent être présente où non.
exemple :
Sur l'IFS j'ai un fichier XML.
Je copie ce fichier avec
CPYFRMIMPF FROMSTMF('/XML/SIMOC.xml') TOFILE(LIB/TESTXML) MBROPT(*REPLACE) FROMCCSID(*FILE) TOCCSID(*FILE) RCDDLM(*LF) DTAFMT(*DLM) STRDLM(*NONE) RMVBLANK(*NONE) RPLNULLVAL(*FLDDFT)
dans un fichier créer par un crtpf.
Je peux lire mon fichier et faire un scan pour trouver
En cherchant un peu j'ai trouvé dans VOLUBIS ce code
Mais à ce niveau j'ai zero dans pos alors que j'ai bien la balise <Circulation> dans fichier xml.
Donc je me demande si mon fichier doit être créer par un crtpf ou autrement ?
Demande supplémentaire : dans sqltype(XML_DBCLOB:2500) à quoi correspond la valeur 2500 ?
Merci d'avance pour vos réponses.
Mon but est de rechercher et d'extraire des valeurs contenues dans certaines balises d'un fichier xml. Certaines de ces balises peuvent être présente où non.
exemple :
Code : Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<ns3:..........>
<Owner>
...
</Owner>
<NombreErreur>1</NombreErreur>
<Circulation>
<NumeroIdentifiantClient>xxxxx<NumeroIdentifiantClient>
<Anomalie>
<CodeAnoamlie>1</CodeAnoamlie>
<LibelleAnomalie>rrrrrrrrrrrrr </LibelleAnomalie>
</Anomalie>
</Circulation>
<Circulation>
<NumeroIdentifiantClient>xxxxx<NumeroIdentifiantClient>
</Circulation>
</ns3>
Sur l'IFS j'ai un fichier XML.
Je copie ce fichier avec
CPYFRMIMPF FROMSTMF('/XML/SIMOC.xml') TOFILE(LIB/TESTXML) MBROPT(*REPLACE) FROMCCSID(*FILE) TOCCSID(*FILE) RCDDLM(*LF) DTAFMT(*DLM) STRDLM(*NONE) RMVBLANK(*NONE) RPLNULLVAL(*FLDDFT)
dans un fichier créer par un crtpf.
Je peux lire mon fichier et faire un scan pour trouver
En cherchant un peu j'ai trouvé dans VOLUBIS ce code
Code : Tout sélectionner
dFileXml s sqltype(XML_DBCLOB:2500)
d pos s 5i 0
/free
exec sql
select LIGNE into :FileXml from lib/testxml1;
pos = %scan(%ucs2('Circulation') : FileXml_data);
*inlr = *on;
/end-free
Donc je me demande si mon fichier doit être créer par un crtpf ou autrement ?
Demande supplémentaire : dans sqltype(XML_DBCLOB:2500) à quoi correspond la valeur 2500 ?
Merci d'avance pour vos réponses.