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 :

lecture d'un XML : chargement d'un sous noeud


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Par défaut lecture d'un XML : chargement d'un sous noeud
    bonjour

    j'ai un fichier xml comme ceci

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <SUGGEST>
      <ENTREPRISE>
        <NOM_ENTREPRISE>Sarl Num1</NOM_ENTREPRISE>
        <ADRESSE>
        </ADRESSE>
        <CODE_POSTAL>
        </CODE_POSTAL>
        <VILLE>
        </VILLE>
        <TELEPHONE>
        </TELEPHONE>
        <FAX>
        </FAX>
        <COURRIEL>alexandreparrein@gmail.com</COURRIEL>
        <DISTRIBUTEUR>
        </DISTRIBUTEUR>
        <LST_EPI>
          <EPI>
            <CODE>UNYC-0001</CODE>
            <TYPE>ABSORBEUR</TYPE>
            <NORME>
            </NORME>
            <MARQUE>UNYC</MARQUE>
            <MODELE>1</MODELE>
            <NUM_MARQUAGE>0001</NUM_MARQUAGE>
            <ANNEE>
            </ANNEE>
            <DUREE_DE_VIE>5</DUREE_DE_VIE>
            <RESULTAT>MAINTIENT EN SERVICE</RESULTAT>
            <MISE_EN_SERVICE>11/03/2010</MISE_EN_SERVICE>
          </EPI>
    </LST_EPI>
      </ENTREPRISE>
    </SUGGEST>

    j'aimerais charger un combobox avec la liste des code dans le noeud EPI en fonction d'un nom d'entreprise

    pour cela j'utilise ca

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
            Dim XmlDoc As XmlDocument = New XmlDocument()
            XmlDoc.Load(Application.StartupPath & "\suggest.XML")
            Dim element, element2 As XmlNodeList
            element = XmlDoc.DocumentElement.GetElementsByTagName("ENTREPRISE")
            Dim noeud, noeudEnf As XmlNode
            Dim nom As String
            For Each noeud In element
                For Each noeudEnf In noeud.ChildNodes
                    If noeudEnf.LocalName = "NOM_ENTREPRISE" Then
                        nom = noeudEnf.InnerText
                        'txt_entreprise.AutoCompleteCustomSource.Add(nom)
                        'MsgBox(type)
                        element2 = XmlDoc.DocumentElement.GetElementsByTagName("LST_EPI")
                        Dim noeudEPI, noeudEPIenf As XmlNode
                        For Each noeudEPI In element
                            For Each noeudEPIenf In noeudEPI.ChildNodes
                                If noeudEPIenf.LocalName = "CODE" Then
                                    cb_listeEPI.Items.Add(noeudEPIenf.InnerText)
                                End If
                            Next
                        Next
                    End If
     
                Next
            Next

    mais rien ne ce charge

    a votre avis pourquoi ?

  2. #2
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    Salut,

    Je ne touche pas souvent au XML mais est ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    For Each noeudEPI In element
    ...
    ne serait pas plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    For Each noeudEPI In element2
    ...
    A voir...

  3. #3
    Membre très actif
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Par défaut
    en faite je me suis tromper ce n'est pas des élément dans le nœud

    mais des nœud dans des nœud

    donc ca donnerai plutot ca

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Dim XmlDoc As XmlDocument = New XmlDocument()
            XmlDoc.Load(Application.StartupPath & "\suggest.XML")
            Dim element As XmlNodeList
            element = XmlDoc.DocumentElement.GetElementsByTagName("ENTREPRISE")
            Dim noeud, noeudEnf, noeudEPI As XmlNode
            Dim nom As String = Frm_main.txt_entreprise.Text
            For Each noeud In element
                Dim ok As Integer = 0
                For Each noeudEnf In noeud.ChildNodes
                    If noeudEnf.LocalName = "NOM_ENTREPRISE" And noeudEnf.InnerText = nom Then
                        ok = 1
                    End If
                    If ok = 1 And noeudEnf.LocalName = "LST_EPI" Then
                        'MsgBox(noeudEnf.FirstChild.InnerText)
                        For Each noeudEPI In noeudEnf.ChildNodes
                            If noeudEPI.LocalName = "CODE" Then
                                cb_listeEPI.Items.Add(noeudEPI.InnerText)
                            End If
                        Next
     
     
                    End If
     
                Next
            Next
    quand je fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox(noeudEnf.FirstChild.InnerText)
    ca m'affiche tout le premier nœud

    mais le for each ne tourne pas ><

  4. #4
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    D'après l'organisation du fichier xml, il faudra plutôt chercher les enfants de EPI et non pas les enfants de LST_EPI (EPI est l'enfant de LST_EPI).

    Sinon as-tu débogé pas à pas pour voir ce que tu as dans chaque boucle?
    Je te l'accorde, plus il y a de noeud plus c'est prise de tête

  5. #5
    Membre très actif
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Par défaut
    oui j'ai debogué pas a pas
    et enfaite il reste a LST_EPI et ne descend pas

    c'est la petite blague avant le week end

  6. #6
    Membre très actif
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Par défaut
    ah ya du progrès maintenat ca m'affiche des code EPI mais ca me les affiche tous ...

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
            Dim XmlDoc As XmlDocument = New XmlDocument()
            XmlDoc.Load(Application.StartupPath & "\suggest.XML")
            Dim element, element2 As XmlNodeList
            element = XmlDoc.DocumentElement.GetElementsByTagName("ENTREPRISE")
            element2 = XmlDoc.DocumentElement.GetElementsByTagName("EPI")
            Dim noeud, noeudEnf, noeudEPI, noeudEPIenf As XmlNode
            Dim nom As String = Frm_main.txt_entreprise.Text
            For Each noeud In element
                Dim ok As Integer = 0
                For Each noeudEnf In noeud.ChildNodes
     
                    If noeudEnf.LocalName = "NOM_ENTREPRISE" And noeudEnf.InnerText = nom Then
                        ok = 1
     
                    End If
                    If ((ok = 1) And (noeudEnf.LocalName = "LST_EPI") And (noeudEnf.HasChildNodes = True)) Then
                        'MsgBox(noeudEnf.LocalName)
                        'MsgBox(noeudEnf.FirstChild.InnerText)
     
                        For Each noeudEPI In element2
                            'MsgBox(noeudEnf.HasChildNodes)
                            For Each noeudEPIenf In noeudEPI.ChildNodes
     
                                If (noeudEPIenf.LocalName = "CODE") Then
                                    cb_listeEPI.Items.Add(noeudEPIenf.InnerText)
                                End If
                            Next
                        Next
                    End If
     
                Next
            Next

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

Discussions similaires

  1. Lecture d'un fichier XML par PL/SQL sous oracle10g
    Par nejib salem dans le forum PL/SQL
    Réponses: 2
    Dernier message: 17/05/2011, 13h35
  2. comment lecture un fichier xml sous windows mobile 6
    Par orman05 dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 01/05/2011, 00h15
  3. lecture un fichier xml sous bash
    Par kandy dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 10/02/2010, 12h28
  4. [VB.net]Lecture xml vers dataset : prob avec sous noeuds
    Par Garrett dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/04/2007, 20h28
  5. [Arbre XMl] Extraction d'un sous arbre
    Par tipaquo dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/06/2005, 12h34

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