DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion des fichiers XML
  • Présentation
  • Exemple de lecture générique d'un document XML
  • Exemple de création d'un document XML
  • Exemple de modification d'un document XML
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Présentation
Les exemples suivants permettent de manipuler un document XML via les variables de type xmlDocument, xmlNoeud, ...
Exemple de lecture générique d'un document XML
NomFichierXML est une chaîne
NomFichierXML = fSélecteur("*.*", "Fichier.xml", "Sélectionner un fichier XML", ...
"Fichier xml (*.xml)" + TAB + "*.xml" + RC + "Tous" + TAB + "*.*")
 
// Teste si le fichier est sélectionné
SI NomFichierXML <> "" ALORS
// Ouverture du fichier XML
xmlDoc est un xmlDocument
xmlDoc = XMLOuvre(NomFichierXML, depuisFichier)
// Vérifie qu'il y a bien au moins une racine (en général il n'y en a qu'une)
SI xmlDoc..NoeudRacine..Occurrence < 1 ALORS
Info("Le fichier XML " + NomFichierXML + " ne contient pas de noeud racine")
SINON
// Affiche le détail de toutes les racines
POUR TOUT UnNoeudRacine DE xmlDoc..NoeudRacine
DetailNoeudEtSousNoeuds(UnNoeudRacine)
FIN
FIN
FIN
// Code de la procédure DetailNoeudEtSousNoeuds
 
// Résumé : Affiche dans une fenêtre de trace arborescence du noeud passé en paramètre
// Syntaxe :
// DetailNoeudEtSousNoeuds(<unNoeudXML> est xmlNoeud [, <nNiveau> est entier])
//
// Paramètres :
// unNoeudXML (xmlNoeud) : Noeud XML dont on veut afficher le détail
// nNiveau (entier - valeur par défaut=0) : Niveau actuel du noeud
// Valeur de retour :
// Aucune
PROCÉDURE DetailNoeudEtSousNoeuds(LOCAL unNoeudXML est un xmlNoeud, nNiveau est un entier=0)
 
sAttributs est une chaîne = ""
 
// Vérifie l'existence des attributs
SI unNoeudXML..Attribut..Occurrence > 0 ALORS
// Oui, donc parcours des attributs
POUR TOUT unAttribut DE unNoeudXML..Attribut
sAttributs += " " + UnicodeVersAnsi(unAttribut..Nom) + "=""" + ...
UnicodeVersAnsi(unAttribut..Valeur) + """"
FIN
FIN
 
// Début du noeud
Trace(Répète("-", 2*nNiveau) + "<" + UnicodeVersAnsi(unNoeudXML..Nom) + sAttributs + "> " + ...
UnicodeVersAnsi(unNoeudXML..Texte))
 
// Parcours des sous-noeuds
POUR TOUT unSousNoeudXML DE unNoeudXML
// Le nom du sous-noeud est non vide ?
// (attention tout est Unicode avec les variables XML)
SI PAS UnicodeVersAnsi(unSousNoeudXML..Nom) ~= "" ALORS
// Sous-noeuds
DetailNoeudEtSousNoeuds(unSousNoeudXML, nNiveau+1)
// Fin du sous-noeud
FIN
FIN
// Fin du noeud
Trace(Répète("-", 2*nNiveau) + "</" + unNoeudXML..Nom + ">")
Exemple de création d'un document XML
// Création d'une variable XML
xmlFacture est un xmlDocument,description="Modele_Facture"
// Note : ,description="Modele_Facture" est optionnel.
// Cette notation permet d'avoir une aide à la saisie si un fichier XML exemple a été importé
 
xmlUnNoeud est un xmlNoeud
 
// Création de la racine (car la création automatique se fait uniquement à un niveau)
xmlUnNoeud..Nom = "LISTE_DE_FACTURES"
Ajoute(xmlFacture, xmlUnNoeud)
 
// ----Création d'une nouvelle facture
xmlUnNoeud..Nom = "FACTURE"
Ajoute(xmlFacture.LISTE_DE_FACTURES, xmlUnNoeud)
 
// Création des éléments de la facture
xmlFacture.LISTE_DE_FACTURES.FACTURE[1].Numéro = 1
xmlFacture.LISTE_DE_FACTURES.FACTURE[1].TOTAL = 172.6
xmlFacture.LISTE_DE_FACTURES.FACTURE[1].TVA = 19.6
 
// Création d'une nouvelle ligne de facture
xmlUnNoeud..Nom = "LIGNE_FACTURE"
Ajoute(xmlFacture.LISTE_DE_FACTURES.FACTURE[1], xmlUnNoeud)
xmlFacture.LISTE_DE_FACTURES.FACTURE[1].LIGNE_FACTURE[1].Description = ...
"Description ligne 1 facture 1"
xmlFacture.LISTE_DE_FACTURES.FACTURE[1].LIGNE_FACTURE[1].MONTANT = 84.25
 
// Création d'une nouvelle ligne de facture
xmlUnNoeud..Nom = "LIGNE_FACTURE"
Ajoute(xmlFacture.LISTE_DE_FACTURES.FACTURE[1], xmlUnNoeud)
xmlFacture.LISTE_DE_FACTURES.FACTURE[1].LIGNE_FACTURE[2].Description = ...
"Description ligne 2  facture 1"
xmlFacture.LISTE_DE_FACTURES.FACTURE[1].LIGNE_FACTURE[2].MONTANT = 88.35
 
//----Création d'une nouvelle facture
xmlUnNoeud..Nom = "FACTURE"
Ajoute(xmlFacture.LISTE_DE_FACTURES, xmlUnNoeud)
 
// Création des éléments de la facture
xmlFacture.LISTE_DE_FACTURES.FACTURE[2].Numéro = 2
xmlFacture.LISTE_DE_FACTURES.FACTURE[2].TOTAL = 225.65
xmlFacture.LISTE_DE_FACTURES.FACTURE[2].TVA = 5.5
 
// --Création d'une nouvelle ligne de facture
xmlUnNoeud..Nom = "LIGNE_FACTURE"
Ajoute(xmlFacture.LISTE_DE_FACTURES.FACTURE[2], xmlUnNoeud)
xmlFacture.LISTE_DE_FACTURES.FACTURE[2].LIGNE_FACTURE[1].Description = ...
"Description ligne 1 facture 2"
xmlFacture.LISTE_DE_FACTURES.FACTURE[2].LIGNE_FACTURE[1].MONTANT = 52.35
 
// --Création d'une nouvelle ligne de facture
xmlUnNoeud..Nom = "LIGNE_FACTURE"
Ajoute(xmlFacture.LISTE_DE_FACTURES.FACTURE[2], xmlUnNoeud)
xmlFacture.LISTE_DE_FACTURES.FACTURE[2].LIGNE_FACTURE[2].Description = ...
"Description ligne 2  facture 2"
xmlFacture.LISTE_DE_FACTURES.FACTURE[2].LIGNE_FACTURE[2].MONTANT = 14.45
 
// --Création d'une nouvelle ligne de facture
xmlUnNoeud..Nom="LIGNE_FACTURE"
Ajoute(xmlFacture.LISTE_DE_FACTURES.FACTURE[2], xmlUnNoeud)
xmlFacture.LISTE_DE_FACTURES.FACTURE[2].LIGNE_FACTURE[3].Description = ...
"Description ligne 3 facture 2"
xmlFacture.LISTE_DE_FACTURES.FACTURE[2].LIGNE_FACTURE[3].MONTANT = 158.85
 
// Chaîne résultat
Info(XMLConstruitChaîne(xmlFacture))
// ou XMLSauve(xmlFacture, SysRep(srMesDocuments) + ["\"] + ...
//            "Liste_Factures.xml", XMLDocumentDéfaut)
Exemple de modification d'un document XML
// Modification du document XML
// Chargement du contenu XML
MonDocXML est un xmlDocument,description="NEWS"
MonDocXML = XMLOuvre(gsCheminFichierXML, depuisFichier)
SI ErreurDétectée = Vrai ALORS
RENVOYER "Erreur détecté lors de l'ouverture du XML : " + ErreurInfo()
SINON
Trace("fichier XML en cours de traitement : " + gsCheminFichierXML)
FIN
 
NoeudRSS est un xmlNoeud,description="NEWS.rss.channel.item"
POUR TOUT NoeudRSS DE  MonDocXML.rss.channel SUR item
SI NoeudRSS.title = sAncien_Titre ALORS
Trace("L'actualité recherchée a été trouvé, on va la modifier")
NoeudRSS.title = sNouveau_Titre
NoeudRSS.description = sNouveau_Commentaire
NoeudRSS.link = sNouveau_Url
FIN
FIN
XMLSauve(MonDocXML, gsCheminFichierXML)
 
// Tout est correct
RENVOYER ""
Version minimum requise
  • Version 16
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale