PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Exemple de manipulation d'un fichier XML
  • Recherche de factures dans un fichier XML
XMLParent (Exemple)
Exemple de manipulation d'un fichier XML
WINDEVWEBDEV - Code ServeurEtats et RequêtesJavaCode Utilisateur (MCU)PHP
sMonDocXML est une chaîne = "XML"
sInfoXML est une chaîne // Chaîne résultat
nIndice est un entier
nPositionXML est un entier

// Crée un document XML vierge
XMLDocument(sMonDocXML, "")

// Facture 1
// ----------
// Elément Racine
XMLAjouteFils(sMonDocXML, "LISTE_DE_FACTURES", "", Vrai)
// Noeud "Père"
XMLAjouteFils(sMonDocXML, "FACTURE", "", Vrai)

// Infos sur la facture
XMLAjouteFils(sMonDocXML, "NUMERO", NumériqueVersChaîne(123))
XMLAjouteFils(sMonDocXML, "TOTAL", NumériqueVersChaîne(420.50))
XMLAjouteFils(sMonDocXML, "TVA", NumériqueVersChaîne(19.6))
XMLAjouteFils(sMonDocXML, "NOTES", "Informations sur la facture 123")

// Détail des lignes de FACTURE :
POUR nIndice = 1 A 5
XMLAjouteFils(sMonDocXML, "LIGNE_FACTURE", NumériqueVersChaîne(nIndice), Vrai)
XMLAjouteFils(sMonDocXML, "DESCRIPTION", "Description ligne " + nIndice)
XMLAjouteFils(sMonDocXML, "MONTANT", NumériqueVersChaîne(84.25))
// Remonte d'un niveau pour la prochaine ligne (ou pour la suite)
XMLParent(sMonDocXML)
FIN

// Facture 2
// -----------
XMLParent(sMonDocXML)

// Remonte d'un niveau pour se mettre au même niveau que la facture précédente
// OU ici XMLRacine(sMonDocXML) car il n'y a plus qu'un niveau
// Noeud "Père"
XMLAjouteFils(sMonDocXML, "FACTURE", "", Vrai)
XMLAjouteFils(sMonDocXML, "NUMERO", NumériqueVersChaîne(456))

// Infos sur la facture
XMLAjouteFils(sMonDocXML, "TOTAL", NumériqueVersChaîne(420.50))
XMLAjouteFils(sMonDocXML, "TVA", NumériqueVersChaîne(5.5))
XMLAjouteFils(sMonDocXML, "NOTES", "Informations sur la facture 456")

// Détail des lignes de FACTURE :
POUR nIndice = 1 A 10
// Sauve la position en cours
nPositionXML = XMLSauvePosition(sMonDocXML)
XMLAjouteFils(sMonDocXML, "LIGNE_FACTURE", NumériqueVersChaîne(nIndice), Vrai)
XMLAjouteFils(sMonDocXML, "DESCRIPTION", "Description ligne " + nIndice)
XMLAjouteFils(sMonDocXML, "MONTANT", NumériqueVersChaîne(42.5))
// Autre moyen par rapport à XMLParent
// Restaure la position pour la prochaine ligne (ou pour la suite)
XMLRetourPosition(sMonDocXML, nPositionXML)
FIN

// Récupère le XML construit
sInfoXML = XMLConstruitChaîne(sMonDocXML)
// Libère le document XML
XMLTermine(sMonDocXML)

// Création du fichier XML
fSauveTexte(ComplèteRep(fRepExe()) + "Facture.xml", sInfoXML)
// Affichage dans l'appli associée aux XML
LanceAppliAssociée(ComplèteRep(fRepExe()) + "Facture.xml")
Recherche de factures dans un fichier XML
WINDEVWEBDEV - Code ServeurEtats et RequêtesJavaCode Utilisateur (MCU)PHP
sMonDocXML est une chaîne = "XML"
sInfoXML est une chaîne

// Chargement du fichier XML dans une chaîne
sInfoXML = fChargeTexte(ComplèteRep(fRepExe()) + "Facture.xml")

// Initialisation des fonctions XML sur ce fichier
XMLDocument(sMonDocXML, sInfoXML)

// on se positionne sur la racine
XMLRacine(sMonDocXML)

// Lecture en recherchant les factures et les infos
// qui nous intéressent de ces factures (structure du fichier XML connue)
BOUCLE
// Recherche d'une "Facture" dans les éléments et/ou sous éléments
XMLRecherche(sMonDocXML, "FACTURE", XMLElément + XMLSousElément + XMLContinue, ...
XMLIgnoreLaCasse + XMLExact)
SI XMLTrouve(sMonDocXML) = Faux ALORS SORTIR
// On a trouvé une facture
// Informations sur la facture
XMLFils(sMonDocXML)
XMLPremier(sMonDocXML)
TANTQUE XMLEnDehors(sMonDocXML) = Faux
SELON XMLNomElément(sMonDocXML)
CAS "NUMERO"
Trace("Facture n° " + XMLDonnée(sMonDocXML))  
CAS "TOTAL"
Trace("Montant facture : " + XMLDonnée(sMonDocXML))
CAS "TVA"
Trace("TVA " + XMLDonnée(sMonDocXML))
CAS "NOTES"
Trace("Notes : " + XMLDonnée(sMonDocXML))
CAS "LIGNE_FACTURE"
// Détail des lignes de la facture en cours
// Informations sur une ligne de la facture
XMLFils(sMonDocXML)
XMLPremier(sMonDocXML)
TANTQUE XMLEnDehors(sMonDocXML) = Faux
SELON XMLNomElément(sMonDocXML)
CAS "NUMERO"
Trace("Facture n° " + XMLDonnée(sMonDocXML))
CAS "MONTANT"
Trace("Montant de la ligne : " + ...
XMLDonnée(sMonDocXML))
CAS "DESCRIPTION"
Trace("Description de la ligne : " + ...
XMLDonnée(sMonDocXML))
AUTRE CAS
// Ici on ne récupère pas les autres infos
// de la ligne, on remonte au niveau du
// détail de la facture
XMLParent(sMonDocXML)
FIN
XMLSuivant(sMonDocXML)
FIN
// On remonte au niveau du détail de la facture
XMLParent(sMonDocXML)
  AUTRE CAS
// Ici on ne récupère pas les autres infos de la facture
 FIN
 XMLSuivant(sMonDocXML)
FIN
// On remonte au niveau de la facture
XMLParent(sMonDocXML)
FIN
// Annule la recherche pour les autres éventuelles fonctions XML utilisées par la suite
XMLAnnuleRecherche(sMonDocXML)
// Libère le document XML
XMLTermine(sMonDocXML)
Info("Parcours des factures terminé")
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire