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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Lire XML avec Vb.NET


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 36
    Par défaut Lire XML avec Vb.NET
    Bonjour,

    Dans le cadre de mon travail, je dois développer une application.
    Souhaitant proposer un paramétrage simple, j'ai choisi d'utiliser un fichier XML.

    Voici mon code "test" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
            Dim XmlDoc As XmlDocument = New XmlDocument()
            Dim element As XmlNodeList
            Dim noeud, noeudEnf As XmlNode
            Dim url As String = Application.StartupPath & "\config.xml"
            XmlDoc.Load(url)
            element = XmlDoc.DocumentElement.GetElementsByTagName("KelioData")
            For Each noeud In element
                For Each noeudEnf In noeud.ChildNodes
                    If (noeudEnf.LocalName = "test") Then
                        MsgBox("ok")
                    End If
     
                Next
            Next
    Le fichier XML :

    <KelioData>
    <test>tutu</test>
    </KelioData>
    Comme vous pouvez le voir, je tente simplement de sortir ce qu'il y a entre mes balises test.
    Par contre, d'après mes tests, je ne rentre même pas dans mon premier for each.

    Si quelqu'un a une idée, je suis preneur.

    Merci !

  2. #2
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Bonsoir,

    Ton souci, vient du fait qu'en faisant XmlDoc.DocumentElement tu te places déjà sur ta balise KelioData et donc la méthode GetElementsByTagName("KelioData") ne renvoie rien (en effet la balise KelioData n'a pas d'éléments KelioData)

    Il suffit donc de juste écrire XmlDoc.GetElementsByTagName("KelioData") pour que cela fonctionne, mais...

    Parce qu'il y a un mais, KelioData représente ton noeud racine, et un document xml bien formé ne peut en contenir qu'un seul, donc boucler sur eux ne rime à rien, tu n'auras qu'un seul "tour de boucle" et par conséquent ton For Each extérieur est inutile, tu peux donc réécrire ceci de la sorte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    XmlDoc.Load(url)
    For Each noeudEnf In XmlDoc.DocumentElement.ChildNodes
        If noeudEnf.LocalName = "test" Then
             MsgBox("ok")
        End If
    Next
    voire carrément (avec utilisation de variables au besoin, là c'est surtout pour des raisons de concision)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    XmlDoc.Load(url)
    For Each noeudEnf In XmlDoc.DocumentElement.GetElementsByTagName("test")
         MsgBox("ok")
    Next
    Pense à vérifier la syntaxe, je n'ai pas testé le code et j'ai plus l'habitude d'utiliser des XDocument que des XmlDocument, au passage je mets ici le code équivalent avec un XDocument (et je me sers d'une possibilité VB.Net au passage les "xml-literal")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Dim xDoc As XDocument = XDocument.Load(url)
     
    ' Récupère tous les éléments directs de la racine nommés <test>
    ' renvoie un IEnumerable(Of XElement)
    Dim testContent = xDoc.Root.<test>
     
    For Each content In testContent
        MessageBox.Show(content.Value) 'Affichera "tutu" avec ton exemple
        'MessageBox.Show(content) ' afficherait <test>tutu</test> avec ton exemple
    Next
     
    'On pourrait aussi faire
    'Dim contents = From content xDoc.Root.<test> Select content.Value
    ' qui renverrait un IEnumerable(Of String) ne stockant que les contenus (ici uniquement "tutu" donc

    Cordialement !

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Par défaut
    Bonjour

    Lorsque j'écris cette boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each content In testContent
        MessageBox.Show(content.Value) 'Affichera "tutu" avec ton exemple
        'MessageBox.Show(content) ' afficherait <test>tutu</test> avec ton exemple
    Next
    j'ai content qui est souligné comme quoi il n'est pas déclaré.

    Pourtant j'ai bien importé ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Imports System.Linq
    Imports System.Data
    Imports System.Xml.Linq
    Imports System.Xml
    Il y a t il autre chose a importer ou a faire pour que cela fonctionne?

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Lire fichier Xml avec vb.net
    Par silace dans le forum VB.NET
    Réponses: 4
    Dernier message: 08/06/2012, 19h40
  2. [XPATH] Débutant - Lire XML avec xpath
    Par LostRailler dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 09/06/2009, 17h08
  3. manipulation XML avec vb.net
    Par etud_ini dans le forum VB.NET
    Réponses: 1
    Dernier message: 30/04/2009, 11h45
  4. lire xml avec attributs dans balises
    Par cd090580 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 08/01/2008, 19h27
  5. Lire XML avec ASP
    Par Tops dans le forum ASP
    Réponses: 4
    Dernier message: 04/04/2005, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo