Lire un fichier XML

Cet article va vous apporter la base de la lecture de fichier XML avec l'extension Advanced XML. Nous allons voir comment charger un fichier, comment le parcourir à l'aide des références et enfin, nous verrons comment lire le contenu de balises.

Support de travail : notre fichier XML "test.xml"

Nous allons dans cet article lire le fichier XML suivant qui se nomme “test.xml” :

<Fichier>
    <Information version="1.2"/>
    <Liste>
        <!-- Liste du personnel et des equipements -->
        <Personne nom="blabla" age="30"/>
	<Chaise nom="chaise de blabla"/>
        <Personne nom="durand" age="25"/>
	<Bureau nom="bureau de durand"/>
	<Personne nom="dupont" age="27"/>
    </Liste>
</Fichier>
Copier ce contenu et enregistrez-le dans un fichier que vous nommerez test.xml (en enlevant l'extension .txt).

Préparation du projet GDevelop

Démarrez GDevelop, et activez l'extension Advanced XML et l'extension Objet texte dans les extensions du projet vierge créé.

Créez une nouvel scène (peu importe le nom) et créez un objet appelé “texte” de type “Objet texte”. Cet objet permettera d'afficher les différents contenus du fichier. En effet, notre but sera d'afficher la version du fichier XML (balise <Information version=“…”/>) et d'afficher la liste du personnel et des équipements contenus dans la balise <Liste>. Je vous conseille de régler la taille d'écriture de l'objet “texte” à 20.

Lecture du fichier

Chargement du fichier

Avant de pouvoir lire le fichier, il faut déjà le charger. Pour cela, au lancement de la scène, il faut utiliser l'action “Advanced XML : Documents > Charger un fichier XML” en entrant le chemin vers le fichier et la référence vers laquelle nous allons charger le fichier : référence “fichier”. En fait, cette référence permettera d'accéder, grâce à son nom, au fichier XML. Nous en profiterons pour faire =55 à la valeur de la variable posY : cette dernière va nous permettre de positionner les différents objets “texte” les uns à la suite des autres sans qu'ils se chevauchent.

event1.jpg

Vérification de l'ouverture du fichier

Même si l'extension est protégée pour éviter les bugs en cas de non ouverture du fichier, il est intéressant d'afficher un message si le fichier n'a pas été correctement chargé. Dans un premier temps, si le document a bien été chargé, nous allons pouvoir lire sa version, et la liste des équipements. Sinon, nous afficherons un message d'erreur (sous forme d'un objet “texte” affichant “Impossible d'ouvrir le fichier”).

Pour cela, nous utilisons la condition “Advanced XML : Général > La référence est valide”. En effet, cette condition permet de tester si la référence existe bien et est valide. Lors de l'ouverture d'un fichier XML, la référence (dans notre cas, la référence “fichier”) est créée uniquement si le fichier a pu être chargé. Donc, nous devons créer ces deux événements en tant que sous-événement de l'événement vu dans la partie précédente :

event2.jpg

Lecture de la version du fichier

Maintenant que l'on est sûr que le fichier a été correctement chargé, nous pouvons le traiter. Pour cela, ajoutons un sous-événement à l'événement qui a pour condition ““fichier” existe et est valide”.

Afin d'accéder au contenu de l'attribut “version” de la balise <Information/>, nous devons charger cet élément dans une référence, cette dernière nous permettra alors d'accéder au contenu même de la balise. Ajoutez donc l'action “Charger un éléménent dans une référence”. Cette action se compose de 3 paramètres obligatoires :

  • Référence d'un élément existant : C'est le nom de la référence vers un élément qui existe déjà (la référence doit donc déjà exister). Dans notre cas, nous iront vers la balise <Information/> depuis la référence “fichier”.
  • Référence à créer sur le futur élément : C'est le nom de la référence à créer sur l'élément que nous voulons (la balise <Information/>). Dans notre cas, nous mettrons “element information”.
  • Chemin : C'est le chemin qui lie l'élément à charger (2ème paramètre) à l'élément dont la référence existe déjà (1er paramètre). Dans notre cas, il faut mettre “Fichier/Information”.

Dans notre cas, nous pouvons résumer l'action par ce schéma :

refexpl.jpg

Nous “partons” de la référence “fichier” qui pointe le fichier XML pour créer la référence “element information” en passant par le chemin “Fichier/Information”. En effet, en partant de la référence “fichier” qui est à la base du fichier, nous devons aller dans la balise <Fichier> et enfin la balise <Information> pour créer la référence dessus (d'où le chemin qui est “Fichier/Information”).

Notez que le chemin est relatif à l'élément de base dont la référence est donnée dans le 1er paramètre de l'action (“Référence d'un élément existant”). Par exemple, si nous étions partit d'une référence pointant sur l'élément <Fichier/>, nous aurions du créer la référence “element information” en passant par le chemin “Information” (on est déjà dans la balise <Fichier/>).