|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
| Génération d'un fichier XML avec xmlDocument |
| Débuté par afed, 05 mar. 2026 10:07 - 5 réponses |
| |
| | | |
|
| |
Membre enregistré 3 messages |
|
| Posté le 05 mars 2026 - 10:07 |
Bonjour,
Je suis actuellement en train de générer un fichier xml à l'aide de l'objet XML et j'ai plusieurs questions auxquelles je ne trouve pas de réponse dans la documentation.
J'utilise l'objet WL XMLDocument auquel je passe en description un fichier XML de formatage.
Question 1 : Le fichier XML de formatage utilise des préfixes pour chaque balise, par exemple <cbc:ProfileID>. Quand j'utilise l'objet windev, il ignore le préfixe dans l'autocomplete et dans le code généré : <cbc:ProfileId> devient simplement <ProfileId>. Comment faire pour qu'il prenne les préfixes en compte ?
Question 2 : Certaines balises ont des attributs (<balise attr="bob">Ross</balise>). J'ai vu l'existence de l'objet xmlAttribut mais je ne vois pas comment ajouter cet xmlAttribut à une balise. Comment faire ?
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 310 messages |
|
| Posté le 05 mars 2026 - 16:35 |
Bonjour,
C'est quoi l"objet WL XMLDocument" ?
-- Bon dev, Jean-Pierre |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 messages |
|
| Posté le 06 mars 2026 - 08:31 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 310 messages |
|
| Posté le 06 mars 2026 - 08:48 |
afed a écrit :
En fait, ce qui m'a dérouté c'est l'expression "objet WL" : XMLDocument est une variable et non pas un objet. Mais je ne comprends toujours pas ton problème. Il serait préférable que tu montres ton code (entre balises WLangage)
-- Bon dev, Jean-Pierre |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 messages |
|
| Posté le 06 mars 2026 - 11:05 |
Voilà le code WL :
doc est un xmlDocument,Description="UC1-F1-FULL-formatUBL-Invoice" attr est un xmlAttribut attr.Nom = "bob" attr = "Ross" doc.Invoice.cbc:CustomizationID = "Test Custom ID" doc.Invoice.ProfileID = "bobId" doc.Invoice.ID = "UC1_20260101_F" doc.Invoice.IssueDate = DateVersChaîne(DateSys(), "AAAAMMJJ") doc.Invoice.Note[1] = "test" doc.Invoice.Note[2] = "test2"
XMLSauve(doc, fRepExe()/"facture.xml",XMLMiseEnForme)
Le fichier XML ressemble à ça (tronqué):
<?xml version="1.0" encoding="utf-8"?> <Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:oasis:names:specification:ubl:schema:xsd:UnqualifiedDataTypes-2"> <cbc:CustomizationID>urn.cpro.gouv.fr:1p0:einvoicingextract#Full</cbc:CustomizationID> <!-- BT-24 : Type de profil (e-invoicing, e-reporting, facture etc..) --> <cbc:ProfileID>S1</cbc:ProfileID> <!-- BT-23 : Cadre de facturation --> <!-- Facture de prestation de service --> <cbc:ID>UC1_2023001_F</cbc:ID> <!-- BT-1 : Numéro de facture --> <cbc:IssueDate>2023-01-01</cbc:IssueDate> <!-- BT-2 : Date d'émission --> <cbc:DueDate>2023-01-30</cbc:DueDate> <!-- BT-9 : Date d'échéance --> <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode> <!-- BT-3 : Code de type de facture --> <cbc:Note>#REG#FOURNISSEUR F SARL au capital de 50 000 EUR</cbc:Note> <!-- BG-1 : Note de facture --> <cbc:Note>#PMD#<!-- BT-21 : Code du sujet de la note de facture -->Tout retard de paiement engendre une pénalité exigible à compter de la date d'échéance, calculée sur la base de trois fois le taux d'intérêt légal.</cbc:Note> <!-- BT-22 : Note de facture --> <cbc:Note>#PMT#Indemnité forfaitaire pour frais de recouvrement en cas de retard de paiement : 40 €.</cbc:Note> <cbc:Note>#AAB#Les réglements reçus avant la date d'échéance ne donneront pas lieu à escompte.</cbc:Note> <cbc:Note>#ABL#RCS PARIS 987 654 324 - NAF xxxxx</cbc:Note> <cbc:Note>#AAI#Mon adresse dans ma ville - contact@moifournisseur.fr - www.moifournisseur.com</cbc:Note> <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode> <!-- BT-5 : Code devise facture --> <cac:InvoicePeriod> <!-- BG-14 - Période de facturation --> <cbc:StartDate>2023-01-01</cbc:StartDate> <!-- BT-73 : Date de début de la période de facturation --> <cbc:EndDate>2023-01-31</cbc:EndDate> <!-- BT-74 : Date de fin de la période de facturation --> <cbc:DescriptionCode>432</cbc:DescriptionCode> <!-- BT-8 : Code --> </cac:InvoicePeriod> <cac:AccountingSupplierParty> <!-- BG-4 : Vendeur --> <cac:Party> <cac:PostalAddress> <!-- BG-5 : Adresse postal du vendeur --> <cac:Country> <cbc:IdentificationCode>FR</cbc:IdentificationCode> <!-- BT-40 : Code de pays du vendeur --> </cac:Country> </cac:PostalAddress> <cac:PartyTaxScheme> <cbc:CompanyID>FR88100000009</cbc:CompanyID> <!-- BT-31 : Identifiant à la TVA du vendeur --> <cac:TaxScheme> <!-- BT-31-0 : Qualifiant d'Identifiant à la TVA du Vendeur --> <cbc:ID>VAT</cbc:ID> </cac:TaxScheme> </cac:PartyTaxScheme> <cac:PartyLegalEntity> <cbc:CompanyID schemeID="0002">100000009</cbc:CompanyID> <!-- BT-30 : SIREN --> </cac:PartyLegalEntity> </cac:Party> </cac:AccountingSupplierParty> </Invoice>
Mes deux soucis sont donc l'ensemble de préfixes "cbc" ou "cac" devant chaque nom de balise, ainsi que la gestion des attributs. Pour ce qui est du code WL : la ligne doc.Invoice.cbc:CustomizationID était un test, le ":" est converti en espace dans le fichier final.
Dans au pire, j'ai toujours l'option de faire de la manipulation de chaine, mais ça serait bien si je pouvais éviter. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 185 messages |
|
| Posté le 06 mars 2026 - 11:14 |
Bonjour,
J'ai essayé également de construire un xml au départ du xsd en utilisant une variable xml de windev Tout fonctionne SAUF qu'à la génération du xml les valeurs cbc, cac etc étaient effacées. Dommage, c'était bien pratique d'avoir droit à la complétion.
Du coup, j'ai du construire le document xml à la main. Je me suis inspiré de https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/273040-facture-electronique-peppol/read.awp C'est plus long mais ça permet de garder le format des balises
Cordialement,
-- Pierre |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|