PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • 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/iPadApple WatchUniversal Windows 10 AppWindows Mobile
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
PROCEDURE 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
XMLSauve(MonDocXML, gsCheminFichierXML)
FIN
FIN
// Tout est correct
RENVOYER ""
Version minimum requise
  • Version 16
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire