|
| 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) fSauveTexte(ComplèteRep(fRepExe()) + "testessai.xml",sInfoXML)
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 
-- #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) fSauveTexte("D:\temp\testessai.xml",sInfoXML) 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 |
Perso 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 |
| |
| |
| | | |
|
| | | | |
| | |
|