Les fichiers XML (Partie 2)

-=Partie 2=-
Lecture d?un fichier Xml à schéma connu
utilisation de la classe XmlDocument
Vu 10000  fois

 

Imports System.Xml

  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 membres 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")

 

  EXTRACTION DES DONNEES

Exemple de la structure de notre fichier XML :

(les balise d?ouverture et fermeture sont remplacées par " ["  et " ] " )

XmlDocument

 [lstSite]                                                                                      (debut du flux rss)

      [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]                                                                                          (fin du flux Rss)

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 a 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 n?uds " parent " (n?ud) compris dans la liste element
  2. Pour chaque un de ces n?uds, récupérer la liste des n?uds " enfants " (noeudEnf)
  3. Parcourir un a un tous les n?uds enfants (noeudEnf) contenu dans cette liste
  4. Récupérer grâce a la propriété LocalName le nom de la balise du n?ud " enfant " sélectionné
  5. Récupérer le contenu de la balise à l?aide de la propriété InnerText.

 

Ce qui nous donne :

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



 

Publié le  08/02/2004
Auteur:  betatestvb
Cet article est lié au projet:  NewsRss

 

Commentaires

Pas de commentaires

Si vous souhaitez ajouter un commentaire vous devez être authentifié.

 

ASP MAGAZINE  ASP-PHP.NET  C²I  CodePPC  CodeS-SourceS  Dotnet-News.com  Tech Head Brothers 

Dotnet-Project.com© tous droits réservés
Webmaster Aleks. Ont collaboré à l'aboutissement de ce projet :
CodeS-SourceS.com, ASP-PHP.Net, DotNet-FR.org, C2i.fr, Newsletter ASP.NET.