Le premier site francophone dédié au développement Pocket PC


XML et eVB (partie 2)
 
   

 

Partie 1
Partie 2
Partie 3

Les bases du XML

Un document XML est composé de noeuds. Chaque noeud est écrit de la manière suivante :

<noeud>valeur du noeud</noeud>

Ainsi, un noeud possède un nom (comme un nom de champ), et une valeur. Si l'on veut coder en XML que le 'Prenom' d'une personne est 'Stéphane' (oui oui, c'est moi), on peut écrire :

<Prenom>Stéphane</Prenom>

On peut aussi ajouter à notre noeud 'Prenom' des attributs. Les attributs sont un peu comme des valeurs, mais ils ne sont pas écrits de la même manière. Donc si l'on veut ajouter à notre noeud 'Prenom' un attribut 'Rang' dont la valeur est 5 on écrira :

<Prenom Rang="5">Stéphane</Prenom>

Ainsi, il est possible de coder les informations de 2 manières, avec ou sans attribut. Voici les informations concernant une personne. Cette personne possède un code unique dont le champ est 'ID' :

ID 456
Nom Sibué
Prenom Stéphane
Numéro sécurité sociale (bidon) 1.680999054189.35

Codification avec attribut

<Personne ID="456">
  <Nom>Sibué</Nom>
  <Prenom>Stéphane</Prenom>
  <NumSecu>1.680999054189.35</NumSecu>
</Personne>

Codification sans attribut

<Personne>
  <ID>456</ID> 
  <Nom>Sibué</Nom>
  <Prenom>Stéphane</Prenom>
  <NumSecu>1.680999054189.35</NumSecu>
</Personne>

Au niveau logique ce n'est pas la même chose, et au niveau du model objet de la librairie XML de votre Pocket PC non plus.

Note: Si vous voulez créer un fichier xml de toute pièce, il est très important de NE PAS METTRE DE CARACTERES ACCENTUES car ce sont des caractères non reconnus. Les caractères accentués sont remplacés (comme en HTML) par un ensemble d'autres caratères.

Le but de cet article n'est pas de vous apprendre le XML, vous trouverez beaucoups d'informations sur ce sujet sur le site de Microsoft et aussi sur le site Developpez.com, à la rubrique XML.

Il y a forcément un noeud global

Nous venons de parler d'informations concernant une personne. Si vous encoder en XML les informations de plusieurs personnes (ex Dupont et Martin) vous serez obligé d'encapsuler le tout dans un noeud global. Généralement, ce noeud porte le nom des informations portées par le fichier XML :

Ceci ne marche pas car il n'y a pas de noeud global qui encapsule tout le fichier

<personne>
  <id>456</id>
  <nom>dupont</nom>
  <prenom>louis</prenom>
</personne>
<personne>
  <id>789</id>
  <nom>martin</nom>
  <prenom>paul</prenom>
</personne>

Ceci fonctionne, le noeud 'Personnes' encapsule tout le fichier

<personnes>
  <personne>
    <id>456</id>
    <nom>dupont</nom>
    <prenom>louis</prenom>
  </personne>
  <personne>
    <id>789</id>
    <nom>martin</nom>
    <prenom>paul</prenom>
  </personne>
</personnes> 

Un utilitaire pour créer un fichier XML

Microsoft offre en libre téléchargement un programme qui permet de créer et de lire les fichiers XML. Ce programme s'appelle XML Notepad et vous pouvez le télécharger ici.

Lecture du fichier XML 'personne.xml'

Pour effectuer ce petit exercice, vous devez créer le fichier XML '\My Documents\personne.xml' avec le contenu suivant (créez le avec XML Notepad ou avec notepad et copiez-le sur votre Pocket PC) :

<personnes>
  <personne>
    <id>456</id>
    <nom>dupont</nom>
    <prenom>louis</prenom>
  </personne>
  <personne>
    <id>789</id>
    <nom>martin</nom>
    <prenom>paul</prenom>
  </personne>
</personnes> 

Nous allons maintenant taper un petit peu de code eVB pour lire les informations contenues dans notre fichier 'personne.xml'.

Note: Les explications concernant l'ouverture d'un fichier XML sont dans la première partie de cet article.

 

Sub Test1()
         
 Rem Lecture du fichier XML
 Dim xDoc As DOMDocument
 Dim xFile As File
 Dim wBuffer As String
 Rem Instanciation des objets
 Set xDoc = CreateObject("Microsoft.XMLDOM")
 Set xFile = CreateObject("FileCtl.File")
 Rem On place le contenu du fichier XML dans          
Rem une variable de type chaine Call xFile.Open("\My Documents\personne.xml", _
fsModeInput, _
fsAccessRead, _
fsLockRead) wBuffer = xFile.Input(xFile.LOF) Call xFile.Close Set xFile = Nothing Rem On interdit le chargement asynchrone xDoc.async = False Rem On charge le document XML en mémoire call xDoc.LoadXML(wBuffer) Rem On va lire le nombre de noeuds portant le nom 'personne' Dim wList As MSXML.IXMLDOMNodeList Set wList = xDoc.getElementsByTagName("personne") MsgBox "Il y a " & wList.length & " noeud(s) 'personne'" Rem On va lister les infos contenues dans le premier noeud 'personne' Rem Le premier élément a l'index zéro Dim wElement As MSXML.IXMLDOMElement For Each wElement In wList.Item(0).childNodes MsgBox wElement.baseName & "=" & wElement.Text Next

Set xDoc = Nothing

End Sub

Conclusion de cette 2ème partie

Encore quelques pas de plus vers le XML dans vos applications. Je vous conseille vivement, en attendant la 3ème partie de cet article de récolter des informations sur XML en général.

Stéphane Sibué

 

 
       
   
 
   
Copyright 2001-2004 - Tous droits réservés
 
   

iPAQ est un produit de COMPAQ.
Visual Tools est un produit de Microsoft Corporation.
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.