DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion des fichiers XML
  • Déclaration d'une variable de type xmlNoeud
  • Propriétés spécifiques à la description des variables de type xmlNoeud
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
Le type xmlNoeud permet de manipuler un noeud d'un document XML. Les caractéristiques de ce noeud peuvent être définies et modifiées à l'aide de différentes propriétés WLangage.
Ce type de variable est utilisé par :
Remarque : Pour plus de détails sur la déclaration de ce type de variable et l'utilisation des propriétés WLangage, consultez Déclaration d'une variable.
Exemple
MonTexteXML est une chaîne = [
<?xml version="1.0"?>
<!DOCTYPE PLAY SYSTEM "play.dtd">
<PLAY>
<TITLE>The Tragedy of Romeo and Juliet</TITLE>
<ACT><TITLE>ACT I</TITLE>
<PROLOGUE><TITLE>PROLOGUE</TITLE></PROLOGUE>
<SCENE><TITLE>SCENE I.  Verona. A public place.</TITLE></SCENE>
</ACT>
<ACT><TITLE>ACT II</TITLE>
 
<PROLOGUE><TITLE>PROLOGUE</TITLE></PROLOGUE>
<SCENE><TITLE>SCENE I.  A lane by the wall of Capulet's orchard.</TITLE></SCENE>
</ACT>
<ACT><TITLE>ACT III</TITLE>
 
<PROLOGUE><TITLE>PROLOGUE</TITLE></PROLOGUE>
<SCENE><TITLE>SCENE I.  A public place.</TITLE></SCENE>
</ACT>
</PLAY>
]
 
// Chargement d'un document XML
RomeoEtJuliette est un xmlDocument
RomeoEtJuliette = XMLOuvre(MonTexteXML, depuisChaîne)
 
// Affichage du titre des actes
Acte est un xmlNoeud
POUR TOUT Acte DE RomeoEtJuliette.PLAY SUR ACT
Trace(Acte.TITLE)
FIN
// Validation à partir du schéma défini lors de la déclaration
cMonNoeud est un xmlNoeud, description="schemaXSDDuProjet.NoeudRacine"
// La variable peut également être déclarée de la façon suivante :
// cMonNoeud est un xmlNoeud <description="schemaXSDDuProjet.NoeudRacine">
cMonNoeud.Texte = "21"
SI XMLNoeudValide(cMonNoeud) = Faux ALORS
Erreur(ErreurInfo())
SINON
Info("Le noeud XML est valide")
FIN
Remarques

Déclaration d'une variable de type xmlNoeud

Les variables de type xmlNoeud peuvent être déclarées en indiquant un noeud modèle (noeud dans un fichier XSD). La structure de ce document XSD sera lue par WINDEV et permettra de disposer de la complétion automatique sur les noms des noeuds directement dans l'éditeur de code.
Pour déclarer une variable de type xmlNoeud avec un document exemple :
  1. Ajoutez le document XML ou XSD dans le projet.
  2. Le document XML ou XSD apparaît dans le navigateur de projet, dans la branche "Descriptions XML". Il est possible de visualiser sa structure.
  3. Déclarez la variable de la façon suivante :
    <Nom de la variable> est un xmlNoeud, description =  <Chemin du noeud dans le document XSD>
Remarque : la syntaxe de déclaration du noeud peut également être obtenue en réalisant un "Drag and Drop" du noeud depuis l'explorateur de projet.
Vous pouvez maintenant accéder directement aux noeuds fils de la variable par leurs noms. Ces noms sont proposés automatiquement par le mécanisme de complétion automatique de l'éditeur de code.

Propriétés spécifiques à la description des variables de type xmlNoeud

Les propriétés suivantes peuvent être utilisées pour manipuler une variable de type xmlNoeud :
NomType manipuléEffet
AttributTableau de xmlAttributTableau des attributs XML associés au noeud.
ExisteBooléen
  • Vrai si le noeud existe,
  • Faux dans le cas contraire.
Cette propriété est utilisée par exemple pour tester l'existence d'un fils particulier d'un noeud de document.
Cette propriété est disponible en lecture seulement.
NamespaceVariable de type xmlNamespaceNamespace XML du noeud.
NamespaceDéclaréTableau de xmlNamespaceTableau des namespaces XML déclarés par le noeud.
NoeudFilsTableau de xmlNoeudTableau des noeuds fils.
NomChaîne de caractères UNICODENom du noeud.
Android Attention : Il n'est pas possible de créer des éléments (balise ou attribut) avec des caractères accentués.
OccurrenceEntierNombre de noeuds de même niveau et de même nom dans le document XML.
Cette propriété est disponible en lecture seulement.
SourceXMLChaîne de caractères UNICODEFragment de code XML correspondant au noeud. Cette propriété retourne également le code XML des noeuds fils.
Cette propriété est disponible en lecture seulement.
TexteChaîne de caractères UNICODETexte contenu dans le noeud.
TypeEntierType de noeud. Les différents types possibles sont :
  • XMLBalise (valeur par défaut) : Noeud XML simple pouvant contenir des fils.
    Par exemple :
    <NOEUD> <NOEUDFILS> </NOEUDFILS> </NOEUD>
  • XMLTexte : Noeud XML contenant du texte.
    Par exemple :
    <NOEUD> Texte </NOEUD>
  • XMLCDATA : Noeud XML contenant des données qui ne doivent pas être prises en compte par l'analyseur XML.
    Par exemple :
    <NOEUD><![CDATA[Ces données ne sont pas
    traitées par l'analyseur XML]]>
    </NOEUD>
Remarques :
  • Le type ne peut être affecté qu'une seule fois. La propriété est ensuite en lecture seule.
  • Si la propriété Nom est affectée, le noeud sera automatiquement de type XMLBalise.
  • Si la propriété Texte est affectée, le noeud sera automatiquement de type XMLTexte.
  • Lors de l'affectation de la propriété Texte, tous les noeuds fils de type XMLTexte et XMLCData sont supprimés.
AndroidJava Attention : L'ordre d'itération n'est pas nécessairement l'ordre de déclaration des attributs dans le document (généralement les attributs sont listés dans l'ordre alphabétique).
Version minimum requise
  • Version 15
Documentation également disponible pour…
Commentaires
Ecart de comportement entre WD et WD Mobile sous Android
Attention : j'ai noté un écart de comportement entre les parser XML utilisés par Windev et WD mobile sous Andoid.

Soit le XML suivant :

<root>
<group>
<column name="CHAMP1">
<libel>N° Fiche</libel>
</column>
</group>
</root>

et le code suivant :

gXml est un xmlDocument = XMLOuvre(gsParamNomXml,depuisFichier)
POUR TOUT group DE gXml.root SUR group
Trace(group.libel)
FIN

La balise <libel> n'existant pas sous la balise <group>, WD retourne une chaîne vide... par contre, WD Mobile sous Android (4.4) retour "N° Fiche" ! (De même group.libel..Existe retourne Faux sous WD et Vrai sous Android.)

(Testé sous WD V24)
Patrick MOIRE
31 oct. 2019
attention avec la syntaxe POUR TOUT sur les noeud
Avec la version 19 de Windev, la syntaxe POUR TOUT sousNoeud DE noeudPrincipal SUR nomdenoeud
créé un sousnoeud vide si il n'existe aucune occurence du sousnoeud dans le noeud principal.
Il ne faut donc utiliser POUR TOUT que si la présence d'au moins un sous noeud est garantie ou en ajoutant un contrôle dans la boucle
Alexandre
30 juil. 2014

Dernière modification : 22/07/2022

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