|
|
|
|
|
- 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
Exemple d'utilisation des types XML
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 ""
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|