IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Les fichiers XML et VB.Net (Partie 2)

Date de publication : 08/03/2005 , Date de mise a jour : 08/03/2005

Par Selkis (selkis.developpez.com)
 

Dans cette Seconde partie nous allons voir comment Lire un Fichier Xml à schéma connu


I. Lecture
II. Extraction des données
III. Code source

Télecharger le code source commenté exemple vb.net Lecteur de flux rss

I. Lecture

Il est très aisé de lire un fichier Xml dont nous connaissons la structure.
La première chose a faire est de déclarer l'objet qui va contenir les données du fichier.

Les fichier Xml ont un schéma bien défini et pour pouvoir le lire nous devons nous servir du membre XmlDocument dépendant de la classe System.Xml

'creation d'une nouvelle instance du membre xmldocument Dim XmlDoc As XmlDocument = New XmlDocument()
L'instruction Load nous permet de charger les données du document Xml dans l'objet XmlDoc déclarer précédemment pour nous permettre de le lire.

XmlDoc.Load(Application.StartupPath & "Newsite.XML")

II. Extraction des données

Exemple de la structure de notre fichier XML :

<lstSite> <SITE> <URL>http://www.peuw.net/index.xml</URL> <NOM>peuw.net</NOM> </SITE> <SITE> <URL>http://www.poxx.net/index.xml</URL> <NOM>poxx - Science Fair</NOM> </SITE> </lstSite>
Notre but est de récupérer les nœuds enfants [URL] [/URL] et [NOM][/NOM] des nœuds parents [SITE][/SITE] pour pouvoir lire leur valeur .

Intéressons nous a la propriété DocumentElement qui représente la racine de l'arbre et qui grâce à sa méthode GetElementsByTagName va nous permettre de retourner sous forme de liste (XMLNodeList) tous les nœuds portant le nom passé en paramètre (dans notre cas " site ").

Exemple
Dim element As XmlNodeList element = XmlDoc.DocumentElement.GetElementsByTagName("SITE")
Maintenant que nous avons notre liste (element (XmlNodeList)) de nœuds " parents " il nous reste plus qu'a récupérer tous les nœuds enfants.

element contient donc la liste de tous les balises [SITE][/SITE], chaque balise étant représenté par un nœud.

chaque nœud parent et enfant représente un XmlNode qu'il faut déclarer.

Dim nœud, noeudEnf As XmlNode
Pour lire les nœuds enfants nous utiliserons la propriété ChildNodes qui nous retourne pour le nœud sélectionné la liste des ses nœuds enfants sous forme de XmlNode.

il ne nous reste plus qu'a vérifier sur quel nœud on se trouve pour récupérer sa valeur et la traiter.

    On va donc :
  1. Parcourir un a un tous les noeuds " parent " (noeud) compris dans la liste element
  2. Pour chaque un de ces noeuds, récupérer la liste des noeuds " enfants " (noeudEnf)
  3. Parcourir un a un tous les noeuds enfants (noeudEnf) contenu dans cette liste
  4. Récupérer grâce a la propriété LocalName le nom de la balise du noeud " enfant " sélectionné
  5. Récupérer le contenu de la balise à l'aide de la propriété InnerText.

III. Code source

For Each noeud In element For Each noeudEnf In noeud.ChildNodes If noeudEnf.LocalName = "URL" Then UrlSite = noeudEnf.InnerText Else If (noeudEnf.LocalName = "NOM") Then NomSite = noeudEnf.InnerText End If End If Msgbox(Nomsite & " à " & UrlSite) Next Next