PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → création XML
création XML
Débuté par Franckdev, 05 mai 2023 15:49 - 11 réponses
Membre enregistré
6 messages
Posté le 05 mai 2023 - 15:49
Bonjour,
Je cherche à reproduire la même chose en windev.
<?xml version='1.0' encoding='UTF-8'?>
<DataPreparation LcName='String' MCESTransform='@S_XXX.xsl'>
<Job Name='ANY_1_11_14-57-56' OutputMagazineQuantity='1'>
<Cards>
<Card Name='1'>
<DataFields>
<DataField Name='ID'></DataField>
<DataField Name='DISPLAYED_PORTRAIT'>4c97e0e1bfb01.JPG</DataField>
<DataField Name='IMMATRICULATION_NUMBER'>BF38420053</DataField>
<DataField Name='LAST_NAME'>SOME</DataField>
<DataField Name='FIRST_NAME'>JUDI</DataField>
<DataField Name='GENDER'>M</DataField>
<DataField Name='DATE_OF_BIRTH'>01.07.1997</DataField>
<DataField Name='PLACE_OF_BIRTH'>ATTI</DataField>
<DataField Name='JOB'>OUVRIER </DataField>
<DataField Name='ISSUE_DATE'>19/03/2023</DataField>
<DataField Name='VALIDITY_DATE'>18/03/2028</DataField>
<DataField Name='PLACE_OF_ISSUE'>AB</DataField>
<DataField Name='PLACE_OF_DELIVERY'>ANY</DataField>
<DataField Name='DISPLAYED_SIGNATURE'>4c97e0e1bf.JPG</DataField>
<DataField Name='PLACE_OF_RESIDENCE'>ATTINGUIE </DataField>
<DataField Name='ADR_TEL'>07499</DataField>
<DataField Name='NAME_FATHER'> PIERRE</DataField>
<DataField Name='NAME_MOTHER'>MANSOZO </DataField>
<DataField Name='CONTACT_PERSON'> PIERRE</DataField>
<DataField Name='TEL_CONTACT_PERSON'>0749689</DataField>
<DataField Name='SIZE'>175</DataField>
<DataField Name='BLOOD_GROUP'></DataField>
<DataField Name='DATE_OF_BIRTH_FATHER'>01.01.1900</DataField>
<DataField Name='DATE_OF_BIRTH_MOTHER'>01.01.1900</DataField>
<DataField Name='AUTHORITY_SIGNATURE'>AB.JPG</DataField>
<DataField Name='CODEBARRE'>4c97e0e1bfb01.JPG</DataField>
</DataFields>
<DocumentNumber>100000001</DocumentNumber>
</Card>
</Cards>
</Job>
</DataPreparation>

j'ai écris ce code
sNBreligne est une chaîne = TableOccurrence(TABLE_ListeDemande)
MonXml est une chaîne = "xmltest"
XMLDocument(MonXml, "")
XMLAjouteFils(MonXml,"Datapreparation","",Vrai)
XMLAjouteAttribut(MonXml, "LcName","String")
XMLAjouteAttribut(MonXml, "MCESTransform","@SC.xsl")
XMLAjouteFils(MonXml,"Job","",Vrai)
XMLAjouteAttribut(MonXml, "Name",TABLE_ListeABJ.COL_Lot +"_"+DateDuJour()+"_"+HeureSys())
XMLAjouteAttribut(MonXml, "OutputMagazineQuantity",sNBreligne)
XMLAjouteFils(MonXml, "Cards","",Vrai)

pour i = 1_A_ Val(sNBreligne)

XMLAjouteFils(MonXml, "Card","",Vrai)
attribut_card est une chaîne = i
XMLAjouteAttribut(MonXml, "name",attribut_card)
XMLAjouteFils(MonXml, "DataFields","",Vrai)
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_Id[i])
XMLAjouteAttribut(MonXml, "name", "ID")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_Id[i]+"P.JPG")
XMLAjouteAttribut(MonXml, "name", "DISPLAYED_PORTRAIT")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_NumBF[i])
XMLAjouteAttribut(MonXml, "name", "IMMATRICULATION_NUMBER")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_Nom[i])
XMLAjouteAttribut(MonXml, "name", "LAST_NAME")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_Prenoms[i])
XMLAjouteAttribut(MonXml, "name", "FIRST_NAME")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_Genre[i])
XMLAjouteAttribut(MonXml, "name", "GENDER")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_datenais[i])
XMLAjouteAttribut(MonXml, "name", "DATE_OF_BIRTH")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_LeiuNaiss[i])
XMLAjouteAttribut(MonXml, "name", "PLACE_OF_BIRTH")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_profession[i])
XMLAjouteAttribut(MonXml, "name", "JOB")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_DateDemande[i])
XMLAjouteAttribut(MonXml, "name", "ISSUE_DATE")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_dateValidite[i])
XMLAjouteAttribut(MonXml, "name", "VALIDITY_DATE")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_ConsulatEtab[i])
XMLAjouteAttribut(MonXml, "name", "PLACE_OF_ISSUE")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_commue[i])
XMLAjouteAttribut(MonXml, "name", "PLACE_OF_DELIVERY")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_Id[i]+"S.JPG")
XMLAjouteAttribut(MonXml, "name", "DISPLAYED_SIGNATURE")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_Lieuresid_Act[i])
XMLAjouteAttribut(MonXml, "name", "PLACE_OF_RESIDENCE")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_AdressePers[i])
XMLAjouteAttribut(MonXml, "name", "ADR_TEL")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_NomPere[i])
XMLAjouteAttribut(MonXml, "name", "NAME_FATHER")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_NomMere[i])
XMLAjouteAttribut(MonXml, "name", "NAME_MOTHER")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_PersoneAcontacter[i])
XMLAjouteAttribut(MonXml, "name", "CONTACT_PERSON")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_ContactPersonne[i])
XMLAjouteAttribut(MonXml, "name", "TEL_CONTACT_PERSON")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_Taille[i])
XMLAjouteAttribut(MonXml, "name", "SIZE")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_Groupsang[i])
XMLAjouteAttribut(MonXml, "name", "BLOOD_GROUP")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_ddn_pere[i])
XMLAjouteAttribut(MonXml, "name", "DATE_OF_BIRTH_FATHER")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_ddn_Mere[i])
XMLAjouteAttribut(MonXml, "name", "DATE_OF_BIRTH_MOTHER")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_ConsulatEtab[i]+".JPG")
XMLAjouteAttribut(MonXml, "name", "AUTHORITY_SIGNATURE")
XMLAjouteFils(MonXml, "DataField",TABLE_ListeDemande.COL_Id[i]+"_2D.JPG")
XMLAjouteAttribut(MonXml, "name", "CODEBARRE")
XMLParent(MonXml)
XMLAjouteFils(MonXml,"DocumentNumber",TABLE_ListeDemande.COL_numserie[i])
FIN

sInfoXML est une chaîne = XMLConstruitChaîne(MonXml,XMLMiseEnForme)

XMLTermine(MonXml) // Libère le document XML
fSauveTexte(ComplèteRep(fRepExe()) + "testessai.xml",sInfoXML) //// Création du fichier XML


qui me donne le resultat suivant

<?xml version="1.0" encoding="ISO-8859-1"?>
<Datapreparation LcName="String" MCESTransform="@SC.xsl">
<Job Name="LOT_1_20230424_NOE_20230503_12092222" OutputMagazineQuantity="2">
<Cards>
<Card name="1">
<DataFields name="ID" name="DISPLAYED_PORTRAIT" name="IMMATRICULATION_NUMBER" name="LAST_NAME" name="FIRST_NAME" name="GENDER" name="DATE_OF_BIRTH" name="PLACE_OF_BIRTH" name="JOB" name="ISSUE_DATE" name="VALIDITY_DATE" name="PLACE_OF_ISSUE" name="PLACE_OF_DELIVERY" name="DISPLAYED_SIGNATURE" name="PLACE_OF_RESIDENCE" name="ADR_TEL" name="NAME_FATHER" name="NAME_MOTHER" name="CONTACT_PERSON" name="TEL_CONTACT_PERSON" name="SIZE" name="BLOOD_GROUP" name="DATE_OF_BIRTH_FATHER" name="DATE_OF_BIRTH_MOTHER" name="AUTHORITY_SIGNATURE" name="CODEBARRE">
<DataField/>
<DataField>f16bfbff4a7a0</DataField>
<DataField>f16bfbff4a7a0.JPG</DataField>
<DataField>BF38400100 </DataField>
<DataField>BAMO</DataField>
<DataField>BOUMA</DataField>
<DataField>M</DataField>
<DataField>19740101000000000</DataField>
<DataField>YAO-AKA</DataField>
<DataField>PLANT</DataField>
<DataField>20220801000000000</DataField>
<DataField>20270801</DataField>
<DataField>AB</DataField>
<DataField>NOE</DataField>
<DataField>f16bfbff4a7a0.JPG</DataField>
<DataField>YAO AKAKRO</DataField>
<DataField>012920</DataField>
<DataField>BAUNI IS</DataField>
<DataField>KAIE ENA</DataField>
<DataField>BANI PUL </DataField>
<DataField>014720</DataField>
<DataField>169</DataField>
<DataField/>
<DataField>19000101000000000</DataField>
<DataField>19000101000000000</DataField>
<DataField>ABI.JPG</DataField>
<DataField>f16bfbff4a7a.JPG</DataField>
</DataFields>
<DocumentNumber>1000759581 </DocumentNumber>
</Card>
</Cards>
</Job>
</Datapreparation>

Je constate que les attributs que j'ajoute dans la balise <DataField> n'est pas insérer là où il le faut.
Je souhaite votre aide afin d'améliorer mon code Windev afin de pouvoir reproduire l'exemple.
Si je peux aussi avoir d'autre proposition qui m'aiderons à reproduire l'exemple.

En vous remerciant.

--
plus facile d’être en équipe
Membre enregistré
2 682 messages
Posté le 05 mai 2023 - 16:52
Bonjour,

Tu devrais plutôt faire comme ça
MonXml est un xmlDocument
MonNoeud est un xmlNoeud

MonXml.DataPreparation..Attribut["LcName"] = "String"
MonXml.DataPreparation..Attribut["MCESTransform"] = "@S_XXX.xsl"
MonXml.DataPreparation.Job..Attribut["Name"] = "ANY_1_11_14-57-56"
MonXml.DataPreparation.Job..Attribut["OutputMagazineQuantity"] = "1"
MonXml.DataPreparation.Job.Cards.Card..Attribut["Name"] = "1"

MonNoeud..Nom = "DataField"
MonNoeud..Attribut["Name"] = "ID"
Ajoute(MonXml.DataPreparation.Job.Cards.Card.DataFields,MonNoeud)

MonNoeud..Attribut["Name"] = "DISPLAYED_PORTRAIT"
MonNoeud..Texte = "4c97e0e1bfb01.JPG"
Ajoute(MonXml.DataPreparation.Job.Cards.Card.DataFields,MonNoeud)

MonXml.DataPreparation.Job.Cards.Card.DocumentNumber..Texte = "100000001"

XMLSauve(MonXml,ComplèteRep(fRepExe()) + "testessai.xml",XMLMiseEnForme)


--
Cordialement,

Philippe SAINT-BERTIN
Membre enregistré
6 messages
Posté le 05 mai 2023 - 17:27
Philippe SB a écrit :
Bonjour,

Tu devrais plutôt faire comme ça
MonXml est un xmlDocument
MonNoeud est un xmlNoeud

MonXml.DataPreparation..Attribut["LcName"] = "String"
MonXml.DataPreparation..Attribut["MCESTransform"] = "@S_XXX.xsl"
MonXml.DataPreparation.Job..Attribut["Name"] = "ANY_1_11_14-57-56"
MonXml.DataPreparation.Job..Attribut["OutputMagazineQuantity"] = "1"
MonXml.DataPreparation.Job.Cards.Card..Attribut["Name"] = "1"

MonNoeud..Nom = "DataField"
MonNoeud..Attribut["Name"] = "ID"
Ajoute(MonXml.DataPreparation.Job.Cards.Card.DataFields,MonNoeud)

MonNoeud..Attribut["Name"] = "DISPLAYED_PORTRAIT"
MonNoeud..Texte = "4c97e0e1bfb01.JPG"
Ajoute(MonXml.DataPreparation.Job.Cards.Card.DataFields,MonNoeud)

MonXml.DataPreparation.Job.Cards.Card.DocumentNumber..Texte = "100000001"

XMLSauve(MonXml,ComplèteRep(fRepExe()) + "testessai.xml",XMLMiseEnForme)


--
Cordialement,

Philippe SAINT-BERTIN


Merci pour votre réactivité.
J'ai essayé l'exemple de code que vous m'avez donné et voici
le résultat que j'obtiens.

<?xml version="1.0" encoding="UTF-8"?>
<DataPreparation LcName="String" MCESTransform="@S_XXX.xsl">
<Job Name="ANY_1_11_14-57-56" OutputMagazineQuantity="1">
<Cards>
<Card Name="1">
<DocumentNumber>100000001</DocumentNumber>
</Card>
</Cards>
</Job>
</DataPreparation>
Les balises DataFields, et DataField n'apparaissent pas, ainsi que les différents contenu.

--
plus facile d’être en équipe
Membre enregistré
962 messages
Posté le 06 mai 2023 - 08:24
Hello,
il faut passer par un tableau pour générer les balises Datafield.
Exemple :
1 - importer le xml modèle dans Description xml
2 - Utilisation d'une structure qui contient le nom du datafield et sa valeur
StructDataField est une structure
Name est une chaîne
Valeur est une chaîne
FIN
TabDataFields est un tableau de 0 StructDataField
MonDocXML est un WL.XMLDocument, Description = "modelall"
MonDocXML.DataPreparation..Attribut["LcName"] = "String"
MonDocXML.DataPreparation..Attribut["MCESTransform"] = "@SCP60_XXX.xsl"
MonDocXML.DataPreparation.Job..Attribut["Name"] = "'ANYAMA_1_11-04-2023_14-57-56"
MonDocXML.DataPreparation.Job..Attribut["OutputMagazineQuantity"] = "3"
MonDocXML.DataPreparation.Job.Cards.Card..Attribut["Name"] = "1"
TabDataFields = [ ["ID","4c97e0e1bfb0190320"],["DISPLAYED_PORTRAIT","4c97e0e1bfb013140206P.JPG"],
["IMMATRICULATION_NUMBER","bf384001020053"],["LAST_NAME","SOMES"],
["FIRST_NAME","BERT JUDI"],["GENDER","M"],["DATE_OF_BIRTH","01.07.1997"],
["PLACE_OF_BIRTH","ATTINGUIE"],["JOB","OUVRIER "],["ISSUE_DATE","19/03/2023"],
["VALIDITY_DATE","18/03/2028"],["PLACE_OF_ISSUE","ABIDJAN"],["PLACE_OF_DELIVERY","ANYAMA"],
["DISPLAYED_SIGNATURE","4c97e0e1bfb019032023140206S.JPG"],["PLACE_OF_RESIDENCE","ATTINGUIE "],
["ADR_TEL","0749941689"],["NAME_FATHER","PIERRE SOME"],["NAME_MOTHER","MANSOZO APPOLINE "],
["CONTACT_PERSON","SOME PIERRE"],["TEL_CONTACT_PERSON","0749689"],["SIZE","175"],
["BLOOD_GROUP",""],["DATE_OF_BIRTH_FATHER","01.01.1900"],["DATE_OF_BIRTH_MOTHER","01.01.1900"],
["AUTHORITY_SIGNATURE","ABIDJAN.JPG"],["CODEBARRE","4c97e0e1bfb01923140206_2D.JPG"]]
xml_noeud est un WL.xmlNoeud dynamique = MonDocXML.DataPreparation.Job.Cards.Card.DataFields
x est un entier = 1
POUR TOUT datafield de TabDataFields
Ajoute(xml_noeud,xml_noeud.DataField)
xml_noeud.DataField[x]..Attribut["Name"] = datafield.Name
xml_noeud.DataField[x] = datafield.Valeur
x++
FIN
MonDocXML.DataPreparation.Job.Cards.Card.DocumentNumber = "10000000185"

XMLSauve(MonDocXML,"D:\temp\Mondoc.xml",XMLMiseEnForme)

Résultat :
<?xml version="1.0" encoding="utf-8"?>
<DataPreparation LcName="String" MCESTransform="@SCP60_XXX.xsl">
<Job Name="'ANYAMA_1_11-04-2023_14-57-56" OutputMagazineQuantity="3">
<Cards>
<Card Name="1">
<DataFields>
<DataField Name="ID">4c97e0e1bfb0190320</DataField>
<DataField Name="DISPLAYED_PORTRAIT">4c97e0e1bfb013140206P.JPG</DataField>
<DataField Name="IMMATRICULATION_NUMBER">bf384001020053</DataField>
<DataField Name="LAST_NAME">SOMES</DataField>
<DataField Name="FIRST_NAME">BERT JUDI</DataField>
<DataField Name="GENDER">M</DataField>
<DataField Name="DATE_OF_BIRTH">01.07.1997</DataField>
<DataField Name="PLACE_OF_BIRTH">ATTINGUIE</DataField>
<DataField Name="JOB">OUVRIER </DataField>
<DataField Name="ISSUE_DATE">19/03/2023</DataField>
<DataField Name="VALIDITY_DATE">18/03/2028</DataField>
<DataField Name="PLACE_OF_ISSUE">ABIDJAN</DataField>
<DataField Name="PLACE_OF_DELIVERY">ANYAMA</DataField>
<DataField Name="DISPLAYED_SIGNATURE">4c97e0e1bfb019032023140206S.JPG</DataField>
<DataField Name="PLACE_OF_RESIDENCE">ATTINGUIE </DataField>
<DataField Name="ADR_TEL">0749941689</DataField>
<DataField Name="NAME_FATHER">PIERRE SOME</DataField>
<DataField Name="NAME_MOTHER">MANSOZO APPOLINE </DataField>
<DataField Name="CONTACT_PERSON">SOME PIERRE</DataField>
<DataField Name="TEL_CONTACT_PERSON">0749689</DataField>
<DataField Name="SIZE">175</DataField>
<DataField Name="BLOOD_GROUP" />
<DataField Name="DATE_OF_BIRTH_FATHER">01.01.1900</DataField>
<DataField Name="DATE_OF_BIRTH_MOTHER">01.01.1900</DataField>
<DataField Name="AUTHORITY_SIGNATURE">ABIDJAN.JPG</DataField>
<DataField Name="CODEBARRE">4c97e0e1bfb01923140206_2D.JPG</DataField>
</DataFields>
<DocumentNumber>10000000185</DocumentNumber>
</Card>
</Cards>
</Job>
</DataPreparation>


--
Ami calmant, J.P
Membre enregistré
287 messages
Posté le 06 mai 2023 - 12:36
@Jurassic Pork

Tes réponses sont d'un autre niveau franchement chapeau :merci:

--
#DKR
Membre enregistré
6 messages
Posté le 06 mai 2023 - 15:35
Jurassic Pork a écrit :
Hello,
il faut passer par un tableau pour générer les balises Datafield.
Exemple :
1 - importer le xml modèle dans Description xml
2 - Utilisation d'une structure qui contient le nom du datafield et sa valeur
StructDataField est une structure
Name est une chaîne
Valeur est une chaîne
FIN
TabDataFields est un tableau de 0 StructDataField
MonDocXML est un WL.XMLDocument, Description = "modelall"
MonDocXML.DataPreparation..Attribut["LcName"] = "String"
MonDocXML.DataPreparation..Attribut["MCESTransform"] = "@SCP60_XXX.xsl"
MonDocXML.DataPreparation.Job..Attribut["Name"] = "'ANYAMA_1_11-04-2023_14-57-56"
MonDocXML.DataPreparation.Job..Attribut["OutputMagazineQuantity"] = "3"
MonDocXML.DataPreparation.Job.Cards.Card..Attribut["Name"] = "1"
TabDataFields = [ ["ID","4c97e0e1bfb0190320"],["DISPLAYED_PORTRAIT","4c97e0e1bfb013140206P.JPG"],
["IMMATRICULATION_NUMBER","bf384001020053"],["LAST_NAME","SOMES"],
["FIRST_NAME","BERT JUDI"],["GENDER","M"],["DATE_OF_BIRTH","01.07.1997"],
["PLACE_OF_BIRTH","ATTINGUIE"],["JOB","OUVRIER "],["ISSUE_DATE","19/03/2023"],
["VALIDITY_DATE","18/03/2028"],["PLACE_OF_ISSUE","ABIDJAN"],["PLACE_OF_DELIVERY","ANYAMA"],
["DISPLAYED_SIGNATURE","4c97e0e1bfb019032023140206S.JPG"],["PLACE_OF_RESIDENCE","ATTINGUIE "],
["ADR_TEL","0749941689"],["NAME_FATHER","PIERRE SOME"],["NAME_MOTHER","MANSOZO APPOLINE "],
["CONTACT_PERSON","SOME PIERRE"],["TEL_CONTACT_PERSON","0749689"],["SIZE","175"],
["BLOOD_GROUP",""],["DATE_OF_BIRTH_FATHER","01.01.1900"],["DATE_OF_BIRTH_MOTHER","01.01.1900"],
["AUTHORITY_SIGNATURE","ABIDJAN.JPG"],["CODEBARRE","4c97e0e1bfb01923140206_2D.JPG"]]
xml_noeud est un WL.xmlNoeud dynamique = MonDocXML.DataPreparation.Job.Cards.Card.DataFields
x est un entier = 1
POUR TOUT datafield de TabDataFields
Ajoute(xml_noeud,xml_noeud.DataField)
xml_noeud.DataField[x]..Attribut["Name"] = datafield.Name
xml_noeud.DataField[x] = datafield.Valeur
x++
FIN
MonDocXML.DataPreparation.Job.Cards.Card.DocumentNumber = "10000000185"

XMLSauve(MonDocXML,"D:\temp\Mondoc.xml",XMLMiseEnForme)

Résultat :
<?xml version="1.0" encoding="utf-8"?>
<DataPreparation LcName="String" MCESTransform="@SCP60_XXX.xsl">
<Job Name="'ANYAMA_1_11-04-2023_14-57-56" OutputMagazineQuantity="3">
<Cards>
<Card Name="1">
<DataFields>
<DataField Name="ID">4c97e0e1bfb0190320</DataField>
<DataField Name="DISPLAYED_PORTRAIT">4c97e0e1bfb013140206P.JPG</DataField>
<DataField Name="IMMATRICULATION_NUMBER">bf384001020053</DataField>
<DataField Name="LAST_NAME">SOMES</DataField>
<DataField Name="FIRST_NAME">BERT JUDI</DataField>
<DataField Name="GENDER">M</DataField>
<DataField Name="DATE_OF_BIRTH">01.07.1997</DataField>
<DataField Name="PLACE_OF_BIRTH">ATTINGUIE</DataField>
<DataField Name="JOB">OUVRIER </DataField>
<DataField Name="ISSUE_DATE">19/03/2023</DataField>
<DataField Name="VALIDITY_DATE">18/03/2028</DataField>
<DataField Name="PLACE_OF_ISSUE">ABIDJAN</DataField>
<DataField Name="PLACE_OF_DELIVERY">ANYAMA</DataField>
<DataField Name="DISPLAYED_SIGNATURE">4c97e0e1bfb019032023140206S.JPG</DataField>
<DataField Name="PLACE_OF_RESIDENCE">ATTINGUIE </DataField>
<DataField Name="ADR_TEL">0749941689</DataField>
<DataField Name="NAME_FATHER">PIERRE SOME</DataField>
<DataField Name="NAME_MOTHER">MANSOZO APPOLINE </DataField>
<DataField Name="CONTACT_PERSON">SOME PIERRE</DataField>
<DataField Name="TEL_CONTACT_PERSON">0749689</DataField>
<DataField Name="SIZE">175</DataField>
<DataField Name="BLOOD_GROUP" />
<DataField Name="DATE_OF_BIRTH_FATHER">01.01.1900</DataField>
<DataField Name="DATE_OF_BIRTH_MOTHER">01.01.1900</DataField>
<DataField Name="AUTHORITY_SIGNATURE">ABIDJAN.JPG</DataField>
<DataField Name="CODEBARRE">4c97e0e1bfb01923140206_2D.JPG</DataField>
</DataFields>
<DocumentNumber>10000000185</DocumentNumber>
</Card>
</Cards>
</Job>
</DataPreparation>


--
Ami calmant, J.P

Bonjour Merci pour le coup de main, votre exemple me permet de représenter le model.
Mais je voudrais savoir comment gerer dynamiquement les différentes valeur, car l'indique dans le code que j'ai écris il y a souvent plusieurs ligne dans le tableau que je souhaite générer dans le XML.
comme l'indique l'exemple ci-dessous où je dois générer deux cartes
exemple à représenter:

<?xml version='1.0' encoding='UTF-8'?>
<DataPreparation LcName='String' MCESTransform='@SCP60_XXX.xsl'>
<Job Name='ANYAMA_1_11-04-2023_14-57-56' OutputMagazineQuantity='2'>
<Cards>
<Card Name='1'>
<DataFields>
<DataField Name='ID'>4c97e0e1bfb0190320</DataField>
<DataField Name='DISPLAYED_PORTRAIT'>4c97e0e1bfb013140206P.JPG</DataField>
<DataField Name='IMMATRICULATION_NUMBER'>BF384001020053</DataField>
<DataField Name='LAST_NAME'>SOMES</DataField>
<DataField Name='FIRST_NAME'>BERT</DataField>
<DataField Name='GENDER'>M</DataField>
<DataField Name='DATE_OF_BIRTH'>01.07.1997</DataField>
<DataField Name='PLACE_OF_BIRTH'>ATTINGUIE</DataField>
<DataField Name='JOB'>OUVRIER </DataField>
<DataField Name='ISSUE_DATE'>19/03/2023</DataField>
<DataField Name='VALIDITY_DATE'>18/03/2028</DataField>
<DataField Name='PLACE_OF_ISSUE'>ABI</DataField>
<DataField Name='PLACE_OF_DELIVERY'>ANYAMA</DataField>
<DataField Name='DISPLAYED_SIGNATURE'>4c97e0e1bfb019006S.JPG</DataField>
<DataField Name='PLACE_OF_RESIDENCE'>ATTINGUIE </DataField>
<DataField Name='ADR_TEL'>0749941689</DataField>
<DataField Name='NAME_FATHER'> PIERRE SOME</DataField>
<DataField Name='NAME_MOTHER'>MANSOZO APPOLINE </DataField>
<DataField Name='CONTACT_PERSON'>SOME PIERRE</DataField>
<DataField Name='TEL_CONTACT_PERSON'>0749689</DataField>
<DataField Name='SIZE'>175</DataField>
<DataField Name='BLOOD_GROUP'></DataField>
<DataField Name='DATE_OF_BIRTH_FATHER'>01.01.1900</DataField>
<DataField Name='DATE_OF_BIRTH_MOTHER'>01.01.1900</DataField>
<DataField Name='AUTHORITY_SIGNATURE'>ABIDJAN.JPG</DataField>
<DataField Name='CODEBARRE'>4c97e0e1bfb016_2D.JPG</DataField>
</DataFields>
<DocumentNumber>10000000185</DocumentNumber>
</Card>
<Card Name='2'>
<DataFields>
<DataField Name='ID'>4c97e0e1bfb03113401</DataField>
<DataField Name='DISPLAYED_PORTRAIT'>4c97e0e1bfb01903401P.JPG</DataField>
<DataField Name='IMMATRICULATION_NUMBER'>BF3840010010916</DataField>
<DataField Name='LAST_NAME'>GUERWEA</DataField>
<DataField Name='FIRST_NAME'>RAGNEGDA</DataField>
<DataField Name='GENDER'>F</DataField>
<DataField Name='DATE_OF_BIRTH'>01.01.1983</DataField>
<DataField Name='PLACE_OF_BIRTH'>BAGTENGA</DataField>
<DataField Name='JOB'>MENAGERE</DataField>
<DataField Name='ISSUE_DATE'>19/03/2023</DataField>
<DataField Name='VALIDITY_DATE'>18/03/2028</DataField>
<DataField Name='PLACE_OF_ISSUE'>ABIDJAN</DataField>
<DataField Name='PLACE_OF_DELIVERY'>ANYAMA</DataField>
<DataField Name='DISPLAYED_SIGNATURE'>4c97e0e1b3401S.JPG</DataField>
<DataField Name='PLACE_OF_RESIDENCE'>ATTINGUIE</DataField>
<DataField Name='ADR_TEL'>0170004</DataField>
<DataField Name='NAME_FATHER'>GUERWEMBA P</DataField>
<DataField Name='NAME_MOTHER'>OUEDRAOGO MARM</DataField>
<DataField Name='CONTACT_PERSON'>YAMEOGO GANDAOGO</DataField>
<DataField Name='TEL_CONTACT_PERSON'>0766502</DataField>
<DataField Name='SIZE'>167</DataField>
<DataField Name='BLOOD_GROUP'></DataField>
<DataField Name='DATE_OF_BIRTH_FATHER'>01.01.1900</DataField>
<DataField Name='DATE_OF_BIRTH_MOTHER'>01.01.1900</DataField>
<DataField Name='AUTHORITY_SIGNATURE'>ABIDJAN.JPG</DataField>
<DataField Name='CODEBARRE'>4c97e0e1bfb013401_2D.JPG</DataField>
</DataFields>
<DocumentNumber>100000001857</DocumentNumber>
</Card>
</Cards>
</Job>
</DataPreparation>

Je stock le nombre de ligne à générer dans un champ table.
comme l'indique ce code

sNBreligne est une chaîne = TableOccurrence(TABLE_ListeDemande)

StructDataField est une Structure
Name est une chaîne
Valeur est une chaîne
FIN
TabDataFields est un tableau de 0 StructDataField
MonDocXML est un WL.XMLDocument, description = "modelall"
MonDocXML.DataPreparation..Attribut["LcName"] = "String"
MonDocXML.DataPreparation..Attribut["MCESTransform"] = "@SCP60_XXX.xsl"
MonDocXML.DataPreparation.Job..Attribut["Name"] = TABLE_ListeABJ.COL_Lot +"_"+DateDuJour()+"_"+HeureSys()
MonDocXML.DataPreparation.Job..Attribut["OutputMagazineQuantity"] = sNBreligne
POUR i = 1_À_ TABLE_ListeDemande..Occurrence

sAttribut_card est une chaîne = i
MonDocXML.DataPreparation.Job.Cards.Card..Attribut["Name"] = sAttribut_card
TabDataFields = [ ["ID",TABLE_ListeDemande.COL_Id[i]],["DISPLAYED_PORTRAIT",TABLE_ListeDemande.COL_Id[i]+"P.JPG"],
["IMMATRICULATION_NUMBER",SansEspace(TABLE_ListeDemande.COL_NumBF[i])],["LAST_NAME",TABLE_ListeDemande.COL_Nom[i]],
["FIRST_NAME",TABLE_ListeDemande.COL_Prenoms[i]],["GENDER",TABLE_ListeDemande.COL_Genre[i]],["DATE_OF_BIRTH",DateVersChaîne(TABLE_ListeDemande.COL_datenais[i],"JJ.MM.AAAA")],
["PLACE_OF_BIRTH",TABLE_ListeDemande.COL_LeiuNaiss[i]],["JOB",TABLE_ListeDemande.COL_profession[i]],["ISSUE_DATE",DateVersChaîne(TABLE_ListeDemande.COL_DateDemande[i],"JJ/MM/AAAA")],
["VALIDITY_DATE",DateVersChaîne(TABLE_ListeDemande.COL_dateValidite[i],"JJ/MM/AAAA")],["PLACE_OF_ISSUE",TABLE_ListeDemande.COL_ConsulatEtab[i]],["PLACE_OF_DELIVERY",TABLE_ListeDemande.COL_commue[i]],
["DISPLAYED_SIGNATURE",TABLE_ListeDemande.COL_Id[i]+"S.JPG"],["PLACE_OF_RESIDENCE",TABLE_ListeDemande.COL_Lieuresid_Act[i]],
["ADR_TEL",TABLE_ListeDemande.COL_AdressePers[i]],["NAME_FATHER",TABLE_ListeDemande.COL_NomPere[i]],["NAME_MOTHER",TABLE_ListeDemande.COL_NomMere[i]],
["CONTACT_PERSON",TABLE_ListeDemande.COL_PersoneAcontacter[i]],["TEL_CONTACT_PERSON",TABLE_ListeDemande.COL_ContactPersonne[i]],["SIZE",TABLE_ListeDemande.COL_Taille[i]],
["BLOOD_GROUP",TABLE_ListeDemande.COL_Groupsang[i]],["DATE_OF_BIRTH_FATHER",DateVersChaîne(TABLE_ListeDemande.COL_ddn_pere[i],"JJ.MM.AAAA")],["DATE_OF_BIRTH_MOTHER",DateVersChaîne(TABLE_ListeDemande.COL_ddn_Mere[i],"JJ.MM.AAAA")],
["AUTHORITY_SIGNATURE",TABLE_ListeDemande.COL_ConsulatEtab[i]+".JPG"],["CODEBARRE",TABLE_ListeDemande.COL_Id[i]+"_2D.JPG"]]
xml_noeud est un WL.xmlNoeud dynamique = MonDocXML.DataPreparation.Job.Cards.Card.DataFields
x est un entier = 1
POUR TOUT datafield DE TabDataFields
Ajoute(xml_noeud,xml_noeud.DataField)
xml_noeud.DataField[x]..Attribut["Name"] = datafield.Name
xml_noeud.DataField[x] = datafield.Valeur
x++
FIN
MonDocXML.DataPreparation.Job.Cards.Card.DocumentNumber = SansEspace(TABLE_ListeDemande.COL_numserie[i])
FIN
XMLSauve(MonDocXML,fRepWeb()+"\Mondoc.xml",XMLMiseEnForme)
Membre enregistré
6 messages
Posté le 08 mai 2023 - 11:57
Jurassic Pork a écrit :
Hello,
il faut passer par un tableau pour générer les balises Datafield.
Exemple :
1 - importer le xml modèle dans Description xml
2 - Utilisation d'une structure qui contient le nom du datafield et sa valeur
StructDataField est une structure
Name est une chaîne
Valeur est une chaîne
FIN
TabDataFields est un tableau de 0 StructDataField
MonDocXML est un WL.XMLDocument, Description = "modelall"
MonDocXML.DataPreparation..Attribut["LcName"] = "String"
MonDocXML.DataPreparation..Attribut["MCESTransform"] = "@SCP60_XXX.xsl"
MonDocXML.DataPreparation.Job..Attribut["Name"] = "'ANYAMA_1_11-04-2023_14-57-56"
MonDocXML.DataPreparation.Job..Attribut["OutputMagazineQuantity"] = "3"
MonDocXML.DataPreparation.Job.Cards.Card..Attribut["Name"] = "1"
TabDataFields = [ ["ID","4c97e0e1bfb0190320"],["DISPLAYED_PORTRAIT","4c97e0e1bfb013140206P.JPG"],
["IMMATRICULATION_NUMBER","bf384001020053"],["LAST_NAME","SOMES"],
["FIRST_NAME","BERT JUDI"],["GENDER","M"],["DATE_OF_BIRTH","01.07.1997"],
["PLACE_OF_BIRTH","ATTINGUIE"],["JOB","OUVRIER "],["ISSUE_DATE","19/03/2023"],
["VALIDITY_DATE","18/03/2028"],["PLACE_OF_ISSUE","ABIDJAN"],["PLACE_OF_DELIVERY","ANYAMA"],
["DISPLAYED_SIGNATURE","4c97e0e1bfb019032023140206S.JPG"],["PLACE_OF_RESIDENCE","ATTINGUIE "],
["ADR_TEL","0749941689"],["NAME_FATHER","PIERRE SOME"],["NAME_MOTHER","MANSOZO APPOLINE "],
["CONTACT_PERSON","SOME PIERRE"],["TEL_CONTACT_PERSON","0749689"],["SIZE","175"],
["BLOOD_GROUP",""],["DATE_OF_BIRTH_FATHER","01.01.1900"],["DATE_OF_BIRTH_MOTHER","01.01.1900"],
["AUTHORITY_SIGNATURE","ABIDJAN.JPG"],["CODEBARRE","4c97e0e1bfb01923140206_2D.JPG"]]
xml_noeud est un WL.xmlNoeud dynamique = MonDocXML.DataPreparation.Job.Cards.Card.DataFields
x est un entier = 1
POUR TOUT datafield de TabDataFields
Ajoute(xml_noeud,xml_noeud.DataField)
xml_noeud.DataField[x]..Attribut["Name"] = datafield.Name
xml_noeud.DataField[x] = datafield.Valeur
x++
FIN
MonDocXML.DataPreparation.Job.Cards.Card.DocumentNumber = "10000000185"

XMLSauve(MonDocXML,"D:\temp\Mondoc.xml",XMLMiseEnForme)

Résultat :
<?xml version="1.0" encoding="utf-8"?>
<DataPreparation LcName="String" MCESTransform="@SCP60_XXX.xsl">
<Job Name="'ANYAMA_1_11-04-2023_14-57-56" OutputMagazineQuantity="3">
<Cards>
<Card Name="1">
<DataFields>
<DataField Name="ID">4c97e0e1bfb0190320</DataField>
<DataField Name="DISPLAYED_PORTRAIT">4c97e0e1bfb013140206P.JPG</DataField>
<DataField Name="IMMATRICULATION_NUMBER">bf384001020053</DataField>
<DataField Name="LAST_NAME">SOMES</DataField>
<DataField Name="FIRST_NAME">BERT JUDI</DataField>
<DataField Name="GENDER">M</DataField>
<DataField Name="DATE_OF_BIRTH">01.07.1997</DataField>
<DataField Name="PLACE_OF_BIRTH">ATTINGUIE</DataField>
<DataField Name="JOB">OUVRIER </DataField>
<DataField Name="ISSUE_DATE">19/03/2023</DataField>
<DataField Name="VALIDITY_DATE">18/03/2028</DataField>
<DataField Name="PLACE_OF_ISSUE">ABIDJAN</DataField>
<DataField Name="PLACE_OF_DELIVERY">ANYAMA</DataField>
<DataField Name="DISPLAYED_SIGNATURE">4c97e0e1bfb019032023140206S.JPG</DataField>
<DataField Name="PLACE_OF_RESIDENCE">ATTINGUIE </DataField>
<DataField Name="ADR_TEL">0749941689</DataField>
<DataField Name="NAME_FATHER">PIERRE SOME</DataField>
<DataField Name="NAME_MOTHER">MANSOZO APPOLINE </DataField>
<DataField Name="CONTACT_PERSON">SOME PIERRE</DataField>
<DataField Name="TEL_CONTACT_PERSON">0749689</DataField>
<DataField Name="SIZE">175</DataField>
<DataField Name="BLOOD_GROUP" />
<DataField Name="DATE_OF_BIRTH_FATHER">01.01.1900</DataField>
<DataField Name="DATE_OF_BIRTH_MOTHER">01.01.1900</DataField>
<DataField Name="AUTHORITY_SIGNATURE">ABIDJAN.JPG</DataField>
<DataField Name="CODEBARRE">4c97e0e1bfb01923140206_2D.JPG</DataField>
</DataFields>
<DocumentNumber>10000000185</DocumentNumber>
</Card>
</Cards>
</Job>
</DataPreparation>


--
Ami calmant, J.P

Hello, j'ai testé mais la représentation est bonne mais, Je constate que c'est la dernière ligne du champ table qui est sauvegardé dans le fichier XML.
or j'ai deux lignes que je veux insérer dans le xml.
voici mon code,

sNBreligne est une chaîne = TableOccurrence(TABLE_ListeDemande)
//tNumLigne est un entier
StructDataField est une Structure
Name est une chaîne
Valeur est une chaîne
FIN
TabDataFields est un tableau de 0 StructDataField
MonDocXML est un WL.XMLDocument, description = "modelall"
MonDocXML.DataPreparation..Attribut["LcName"] = "String"
MonDocXML.DataPreparation..Attribut["MCESTransform"] = "@SCP60_XXX.xsl"
MonDocXML.DataPreparation.Job..Attribut["Name"] = TABLE_ListeABJ.COL_Lot +"_"+DateDuJour()+"_"+HeureSys()
MonDocXML.DataPreparation.Job..Attribut["OutputMagazineQuantity"] = sNBreligne
POUR i = 1_À_ TableOccurrence(TABLE_ListeDemande)

sAttribut_card est une chaîne = i
MonDocXML.DataPreparation.Job.Cards.Card..Attribut["Name"] = i
TabDataFields = [ ["ID",TABLE_ListeDemande.COL_Id[i]],["DISPLAYED_PORTRAIT",TABLE_ListeDemande.COL_Id[i]+"P.JPG"],
["IMMATRICULATION_NUMBER",SansEspace(TABLE_ListeDemande.COL_NumBF[i])],["LAST_NAME",TABLE_ListeDemande.COL_Nom[i]],
["FIRST_NAME",TABLE_ListeDemande.COL_Prenoms[i]],["GENDER",TABLE_ListeDemande.COL_Genre[i]],["DATE_OF_BIRTH",DateVersChaîne(TABLE_ListeDemande.COL_datenais[i],"JJ.MM.AAAA")],
["PLACE_OF_BIRTH",TABLE_ListeDemande.COL_LeiuNaiss[i]],["JOB",TABLE_ListeDemande.COL_profession[i]],["ISSUE_DATE",DateVersChaîne(TABLE_ListeDemande.COL_DateDemande[i],"JJ/MM/AAAA")],
["VALIDITY_DATE",DateVersChaîne(TABLE_ListeDemande.COL_dateValidite[i],"JJ/MM/AAAA")],["PLACE_OF_ISSUE",TABLE_ListeDemande.COL_ConsulatEtab[i]],["PLACE_OF_DELIVERY",TABLE_ListeDemande.COL_commue[i]],
["DISPLAYED_SIGNATURE",TABLE_ListeDemande.COL_Id[i]+"S.JPG"],["PLACE_OF_RESIDENCE",TABLE_ListeDemande.COL_Lieuresid_Act[i]],
["ADR_TEL",TABLE_ListeDemande.COL_AdressePers[i]],["NAME_FATHER",TABLE_ListeDemande.COL_NomPere[i]],["NAME_MOTHER",TABLE_ListeDemande.COL_NomMere[i]],
["CONTACT_PERSON",TABLE_ListeDemande.COL_PersoneAcontacter[i]],["TEL_CONTACT_PERSON",TABLE_ListeDemande.COL_ContactPersonne[i]],["SIZE",TABLE_ListeDemande.COL_Taille[i]],
["BLOOD_GROUP",TABLE_ListeDemande.COL_Groupsang[i]],["DATE_OF_BIRTH_FATHER",DateVersChaîne(TABLE_ListeDemande.COL_ddn_pere[i],"JJ.MM.AAAA")],["DATE_OF_BIRTH_MOTHER",DateVersChaîne(TABLE_ListeDemande.COL_ddn_Mere[i],"JJ.MM.AAAA")],
["AUTHORITY_SIGNATURE",TABLE_ListeDemande.COL_ConsulatEtab[i]+".JPG"],["CODEBARRE",TABLE_ListeDemande.COL_Id[i]+"_2D.JPG"]]

FIN

xml_noeud est un WL.xmlNoeud dynamique = MonDocXML.DataPreparation.Job.Cards.Card.DataFields
x est un entier = Val(sNBreligne)
POUR TOUT datafield DE TabDataFields
Ajoute(xml_noeud,xml_noeud.DataField)
xml_noeud.DataField[x]..Attribut["Name"] = datafield.Name
xml_noeud.DataField[x] = datafield.Valeur
x++
FIN
MonDocXML.DataPreparation.Job.Cards.Card.DocumentNumber = SansEspace(TABLE_ListeDemande.COL_numserie)
XMLSauve(MonDocXML,fRepWeb()+"\Mondoc.xml",XMLMiseEnForme)

voici le resultat

<DataPreparation LcName="String" MCESTransform="@SCP60_XXX.xsl">
<Job Name="LOT_1_20230424_NOE_20230508_09354618" OutputMagazineQuantity="2">
<Cards>
<Card Name="2">
<DataFields>
<DataField/>
<DataField Name="ID">f16bfbff4a7a01082022205103</DataField>
<DataField Name="DISPLAYED_PORTRAIT">f16bfbff4a7a01082022205103P.JPG</DataField>
<DataField Name="IMMATRICULATION_NUMBER">BF38400100002293</DataField>
<DataField Name="LAST_NAME">SANA</DataField>
<DataField Name="FIRST_NAME">ASSETA</DataField>
<DataField Name="GENDER">F</DataField>
<DataField Name="DATE_OF_BIRTH">01.01.1978</DataField>
<DataField Name="PLACE_OF_BIRTH">DIALGAYE</DataField>
<DataField Name="JOB">MENAGERE</DataField>
<DataField Name="ISSUE_DATE">01/08/2022</DataField>
<DataField Name="VALIDITY_DATE">01/08/2027</DataField>
<DataField Name="PLACE_OF_ISSUE">ABIDJAN</DataField>
<DataField Name="PLACE_OF_DELIVERY">NOE</DataField>
<DataField Name="DISPLAYED_SIGNATURE">f16bfbff4a7a01082022205103S.JPG</DataField>
<DataField Name="PLACE_OF_RESIDENCE">YAO AKAKRO</DataField>
<DataField Name="ADR_TEL">01517411</DataField>
<DataField Name="NAME_FATHER">SANA HAMIDOU </DataField>
<DataField Name="NAME_MOTHER">SORE LIMATA</DataField>
<DataField Name="CONTACT_PERSON">OUBDA AMADO</DataField>
<DataField Name="TEL_CONTACT_PERSON">0102846201</DataField>
<DataField Name="SIZE">166</DataField>
<DataField Name="BLOOD_GROUP"/>
<DataField Name="DATE_OF_BIRTH_FATHER">01.01.1900</DataField>
<DataField Name="DATE_OF_BIRTH_MOTHER">01.01.1900</DataField>
<DataField Name="AUTHORITY_SIGNATURE">ABIDJAN.JPG</DataField>
<DataField Name="CODEBARRE">f16bfbff4a7a01082022205103_2D.JPG</DataField>
</DataFields>
<DocumentNumber>100000001759581</DocumentNumber>
</Card>
</Cards>
</Job>
</DataPreparation>

ce sont les dernière valeurs qui sont uniquement sauvegardé dans le XML.
comment je peux améliorer mon code afin de pouvoir sauvegarder toutes les lignes de mon champ table.

--
plus facile d’être en équipe
Membre enregistré
185 messages
Posté le 08 mai 2023 - 15:18
Bonjour,

Le code

xml_noeud est un WL.xmlNoeud dynamique = MonDocXML.DataPreparation.Job.Cards.Card.DataFields
x est un entier = Val(sNBreligne)
POUR TOUT datafield DE TabDataFields
Ajoute(xml_noeud,xml_noeud.DataField)
xml_noeud.DataField[x]..Attribut["Name"] = datafield.Name
xml_noeud.DataField[x] = datafield.Valeur
x++
FIN

doit se trouver dans la boucle de parcours de table sinon logique qu'il ne garde que la dernière valeur lue

Cordialement,

--
Pierre
Membre enregistré
962 messages
Posté le 08 mai 2023 - 16:38
Hello,
il semble y a voir des problèmes dans l'écriture des balises Datafield lorsque l'on met la boucle d'écriture de ces balises dans une boucle de Balise CARD. Cela se produit quand on utilise une description XML. Finalement dans le code du premier message , le problème provenait du fait qu'il fallait faire le XMlAjouterFils avec un changement de position pour la balise Datafield et remonter au niveau DataFields à chaque boucle par un XmlParent. Il manquait aussi un XMlParent après l'ajout de la balise DocumentNumber.
Voici un code qui fonctionne chez moi :
StructDataField est une structure
Name est une chaîne
Valeur est une chaîne
FIN
TabDataFields est un tableau de 0 StructDataField
MonXml est une chaîne = "xmltest"
XMLDocument(MonXml, "")
XMLAjouteFils(MonXml,"Datapreparation","",Vrai)
XMLAjouteAttribut(MonXml, "LcName","String")
XMLAjouteAttribut(MonXml, "MCESTransform","@SC.xsl")
XMLAjouteFils(MonXml,"Job","",Vrai)
XMLAjouteAttribut(MonXml, "Name", "ANYAMA_1_11-04-2023_14-57-56")
XMLAjouteAttribut(MonXml, "OutputMagazineQuantity", "3")
XMLAjouteFils(MonXml, "Cards","",Vrai)
POUR i = 1 _A_ 3
TabDataFields = [ ["ID","4c97e0e1bfb0190320" +i],["DISPLAYED_PORTRAIT","4c97e0e1bfb013140206P.JPG"],
["IMMATRICULATION_NUMBER","bf384001020053"],["LAST_NAME","SOMES"],
["FIRST_NAME","BERT JUDI"],["GENDER","M"],["DATE_OF_BIRTH","01.07.1997"],
["PLACE_OF_BIRTH","ATTINGUIE"],["JOB","OUVRIER "],["ISSUE_DATE","19/03/2023"],
["VALIDITY_DATE","18/03/2028"],["PLACE_OF_ISSUE","ABIDJAN"],["PLACE_OF_DELIVERY","ANYAMA"],
["DISPLAYED_SIGNATURE","4c97e0e1bfb019032023140206S.JPG"],["PLACE_OF_RESIDENCE","ATTINGUIE "],
["ADR_TEL","0749941689"],["NAME_FATHER","PIERRE SOME"],["NAME_MOTHER","MANSOZO APPOLINE "],
["CONTACT_PERSON","SOME PIERRE"],["TEL_CONTACT_PERSON","0749689"],["SIZE","175"],
["BLOOD_GROUP",""],["DATE_OF_BIRTH_FATHER","01.01.1900"],["DATE_OF_BIRTH_MOTHER","01.01.1900"],
["AUTHORITY_SIGNATURE","ABIDJAN.JPG"],["CODEBARRE","4c97e0e1bfb01923140206_2D.JPG"]]
XMLAjouteFils(MonXml, "Card","",Vrai)
attribut_card est une chaîne = i
XMLAjouteAttribut(MonXml, "name",attribut_card)
XMLAjouteFils(MonXml, "DataFields","",Vrai)
x est un entier = 1
POUR TOUT datafield de TabDataFields
XMLAjouteFils(MonXml, "DataField",datafield.Valeur,Vrai)
XMLAjouteAttribut(MonXml, "name",datafield.Name)
XMLParent(MonXml)
x++
FIN
XMLParent(MonXml)
XMLAjouteFils(MonXml,"DocumentNumber","10000000185" + NumériqueVersChaîne(i))
XMLParent(MonXml)
FIN
sInfoXML est une chaîne = XMLConstruitChaîne(MonXml,XMLMiseEnForme)

XMLTermine(MonXml) // Libère le document XML
fSauveTexte("D:\temp\testessai.xml",sInfoXML) //// Création du fichier XML

je répète les même données pour les datafield (sauf le ID) pour simplifier le test.

--
Ami calmant, J.P
Membre enregistré
2 682 messages
Posté le 09 mai 2023 - 09:02
Pe
rso avec mon code j'obtiens ce résultat qui correspond tout à fait à ce qui est souhaité comme résultat à savoir
<?xml version="1.0" encoding="UTF-8"?>
<DataPreparation LcName="String" MCESTransform="@S_XXX.xsl">
<Job Name="ANY_1_11_14-57-56" OutputMagazineQuantity="1">
<Cards>
<Card Name="1">
<DataFields>
<DataField Name="ID"/>
<DataField Name="DISPLAYED_PORTRAIT">4c97e0e1bfb01.JPG</DataField>
</DataFields>
<DocumentNumber>100000001</DocumentNumber>
</Card>
</Cards>
</Job>
</DataPreparation>


Donc en récupérant le tableau de @Jurassic Pork on obtient avec un code simple :
MonXml est un xmlDocument
MonNoeud est un xmlNoeud
tabDataFields est un tableau de * par 2 chaînes= [ ["DISPLAYED_PORTRAIT","4c97e0e1bfb013140206P.JPG"],
["IMMATRICULATION_NUMBER","bf384001020053"],["LAST_NAME","SOMES"],
["FIRST_NAME","BERT JUDI"],["GENDER","M"],["DATE_OF_BIRTH","01.07.1997"],
["PLACE_OF_BIRTH","ATTINGUIE"],["JOB","OUVRIER "],["ISSUE_DATE","19/03/2023"],
["VALIDITY_DATE","18/03/2028"],["PLACE_OF_ISSUE","ABIDJAN"],["PLACE_OF_DELIVERY","ANYAMA"],
["DISPLAYED_SIGNATURE","4c97e0e1bfb019032023140206S.JPG"],["PLACE_OF_RESIDENCE","ATTINGUIE "],
["ADR_TEL","0749941689"],["NAME_FATHER","PIERRE SOME"],["NAME_MOTHER","MANSOZO APPOLINE "],
["CONTACT_PERSON","SOME PIERRE"],["TEL_CONTACT_PERSON","0749689"],["SIZE","175"],
["BLOOD_GROUP",""],["DATE_OF_BIRTH_FATHER","01.01.1900"],["DATE_OF_BIRTH_MOTHER","01.01.1900"],
["AUTHORITY_SIGNATURE","ABIDJAN.JPG"],["CODEBARRE","4c97e0e1bfb01923140206_2D.JPG"]]

MonXml.DataPreparation..Attribut["LcName"] = "String"
MonXml.DataPreparation..Attribut["MCESTransform"] = "@S_XXX.xsl"
MonXml.DataPreparation.Job..Attribut["Name"] = "ANY_1_11_14-57-56"
MonXml.DataPreparation.Job..Attribut["OutputMagazineQuantity"] = "1"
MonXml.DataPreparation.Job.Cards.Card..Attribut["Name"] = "1"

MonNoeud..Nom = "DataField"
MonNoeud..Attribut["Name"] = "ID"
Ajoute(MonXml.DataPreparation.Job.Cards.Card.DataFields,MonNoeud)

POUR i = 1 _À_ TableauOccurrence(tabDataFields)
MonNoeud..Attribut["Name"] = tabDataFields[i,1]
MonNoeud..Texte = tabDataFields[i,2]
Ajoute(MonXml.DataPreparation.Job.Cards.Card.DataFields,MonNoeud)
FIN

MonXml.DataPreparation.Job.Cards.Card.DocumentNumber..Texte = "100000001"

XMLSauve(MonXml,ComplèteRep(fRepExe()) + "testessai.xml",XMLMiseEnForme)


<?xml version="1.0" encoding="UTF-8"?>
<DataPreparation LcName="String" MCESTransform="@S_XXX.xsl">
<Job Name="ANY_1_11_14-57-56" OutputMagazineQuantity="1">
<Cards>
<Card Name="1">
<DataFields>
<DataField Name="ID"/>
<DataField Name="DISPLAYED_PORTRAIT">4c97e0e1bfb013140206P.JPG</DataField>
<DataField Name="IMMATRICULATION_NUMBER">bf384001020053</DataField>
<DataField Name="LAST_NAME">SOMES</DataField>
<DataField Name="FIRST_NAME">BERT JUDI</DataField>
<DataField Name="GENDER">M</DataField>
<DataField Name="DATE_OF_BIRTH">01.07.1997</DataField>
<DataField Name="PLACE_OF_BIRTH">ATTINGUIE</DataField>
<DataField Name="JOB">OUVRIER </DataField>
<DataField Name="ISSUE_DATE">19/03/2023</DataField>
<DataField Name="VALIDITY_DATE">18/03/2028</DataField>
<DataField Name="PLACE_OF_ISSUE">ABIDJAN</DataField>
<DataField Name="PLACE_OF_DELIVERY">ANYAMA</DataField>
<DataField Name="DISPLAYED_SIGNATURE">4c97e0e1bfb019032023140206S.JPG</DataField>
<DataField Name="PLACE_OF_RESIDENCE">ATTINGUIE </DataField>
<DataField Name="ADR_TEL">0749941689</DataField>
<DataField Name="NAME_FATHER">PIERRE SOME</DataField>
<DataField Name="NAME_MOTHER">MANSOZO APPOLINE </DataField>
<DataField Name="CONTACT_PERSON">SOME PIERRE</DataField>
<DataField Name="TEL_CONTACT_PERSON">0749689</DataField>
<DataField Name="SIZE">175</DataField>
<DataField Name="BLOOD_GROUP"/>
<DataField Name="DATE_OF_BIRTH_FATHER">01.01.1900</DataField>
<DataField Name="DATE_OF_BIRTH_MOTHER">01.01.1900</DataField>
<DataField Name="AUTHORITY_SIGNATURE">ABIDJAN.JPG</DataField>
<DataField Name="CODEBARRE">4c97e0e1bfb01923140206_2D.JPG</DataField>
</DataFields>
<DocumentNumber>100000001</DocumentNumber>
</Card>
</Cards>
</Job>
</DataPreparation>


--
Cordialement,

Philippe SAINT-BERTIN
Membre enregistré
2 682 messages
Posté le 09 mai 2023 - 09:05
Ensuite créer une 2ème <Card> devient tout simple en rajoutant une boucle supplémentaire

--
Cordialement,

Philippe SAINT-BERTIN
Membre enregistré
6 messages
Posté le 09 mai 2023 - 10:54
Jurassic Pork a écrit :
Hello,
il semble y a voir des problèmes dans l'écriture des balises Datafield lorsque l'on met la boucle d'écriture de ces balises dans une boucle de Balise CARD. Cela se produit quand on utilise une description XML. Finalement dans le code du premier message , le problème provenait du fait qu'il fallait faire le XMlAjouterFils avec un changement de position pour la balise Datafield et remonter au niveau DataFields à chaque boucle par un XmlParent. Il manquait aussi un XMlParent après l'ajout de la balise DocumentNumber.
Voici un code qui fonctionne chez moi :
StructDataField est une structure
Name est une chaîne
Valeur est une chaîne
FIN
TabDataFields est un tableau de 0 StructDataField
MonXml est une chaîne = "xmltest"
XMLDocument(MonXml, "")
XMLAjouteFils(MonXml,"Datapreparation","",Vrai)
XMLAjouteAttribut(MonXml, "LcName","String")
XMLAjouteAttribut(MonXml, "MCESTransform","@SC.xsl")
XMLAjouteFils(MonXml,"Job","",Vrai)
XMLAjouteAttribut(MonXml, "Name", "ANYAMA_1_11-04-2023_14-57-56")
XMLAjouteAttribut(MonXml, "OutputMagazineQuantity", "3")
XMLAjouteFils(MonXml, "Cards","",Vrai)
POUR i = 1 _A_ 3
TabDataFields = [ ["ID","4c97e0e1bfb0190320" +i],["DISPLAYED_PORTRAIT","4c97e0e1bfb013140206P.JPG"],
["IMMATRICULATION_NUMBER","bf384001020053"],["LAST_NAME","SOMES"],
["FIRST_NAME","BERT JUDI"],["GENDER","M"],["DATE_OF_BIRTH","01.07.1997"],
["PLACE_OF_BIRTH","ATTINGUIE"],["JOB","OUVRIER "],["ISSUE_DATE","19/03/2023"],
["VALIDITY_DATE","18/03/2028"],["PLACE_OF_ISSUE","ABIDJAN"],["PLACE_OF_DELIVERY","ANYAMA"],
["DISPLAYED_SIGNATURE","4c97e0e1bfb019032023140206S.JPG"],["PLACE_OF_RESIDENCE","ATTINGUIE "],
["ADR_TEL","0749941689"],["NAME_FATHER","PIERRE SOME"],["NAME_MOTHER","MANSOZO APPOLINE "],
["CONTACT_PERSON","SOME PIERRE"],["TEL_CONTACT_PERSON","0749689"],["SIZE","175"],
["BLOOD_GROUP",""],["DATE_OF_BIRTH_FATHER","01.01.1900"],["DATE_OF_BIRTH_MOTHER","01.01.1900"],
["AUTHORITY_SIGNATURE","ABIDJAN.JPG"],["CODEBARRE","4c97e0e1bfb01923140206_2D.JPG"]]
XMLAjouteFils(MonXml, "Card","",Vrai)
attribut_card est une chaîne = i
XMLAjouteAttribut(MonXml, "name",attribut_card)
XMLAjouteFils(MonXml, "DataFields","",Vrai)
x est un entier = 1
POUR TOUT datafield de TabDataFields
XMLAjouteFils(MonXml, "DataField",datafield.Valeur,Vrai)
XMLAjouteAttribut(MonXml, "name",datafield.Name)
XMLParent(MonXml)
x++
FIN
XMLParent(MonXml)
XMLAjouteFils(MonXml,"DocumentNumber","10000000185" + NumériqueVersChaîne(i))
XMLParent(MonXml)
FIN
sInfoXML est une chaîne = XMLConstruitChaîne(MonXml,XMLMiseEnForme)

XMLTermine(MonXml) // Libère le document XML
fSauveTexte("D:\temp\testessai.xml",sInfoXML) //// Création du fichier XML

je répète les même données pour les datafield (sauf le ID) pour simplifier le test.

--
Ami calmant, J.P

Je vous remercie pour votre aide.
Ce code permet de représenter parfaitement le document existant.
Donc problème résolu.

--
plus facile d’être en équipe