lecture d'un XML : chargement d'un sous noeud
bonjour
j'ai un fichier xml comme ceci
Code:
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:
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 ?
rechercher liste des valeurs d'un enreg. specifique
bonjour alex
d'abord j'insiste sur une chose c'est la recursion que tu n'as pas bien saisi dans mon code qui n'est "exactement" pas le meme que le tiens.
le code que je t'ai donne est totalement different du tiens,parce que ton code marche dans une imbrication de niveau 2 seulement 2(ENTREPRISE->EPI). celui que je t'ai donne peut marcher dans -N-niveau(ENTREPRISE->EPI->CODE->SOUSCODE1->SOUSCODE->2 etc...).
ta formulation etait mal faite et un probleme mal pose ne sera jamais resolu.
voici le code mon cher qui donne la liste des codes EPI dans suggest2.xml:
Code:
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 35 36
|
Imports System.Xml
Public Class Form1
Private Sub btnSearchRecord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearchRecord.Click
Dim XmlDoc As XmlDocument = New XmlDocument()
XmlDoc.Load(Application.StartupPath & "\suggest2.XML")
For Each noeud As XmlNode In XmlDoc.ChildNodes
For Each noeudEnf As XmlNode In noeud.ChildNodes
If noeudEnf.LocalName = "ENTREPRISE" Then
'appel recursif aux enfants des enfants
Call Me.RecursifChercheNodeRecord(noeudEnf)
End If
Next
Next
End Sub
' INGRAT REMERCIE RECURSIF POUR UNE DEUXIEME FOIS
' LISTE LES VALEURS D'UN RECORD
Private Sub RecursifChercheNodeRecord(ByVal xNoeud As Xml.XmlNode)
Dim strNom As String = ""
For Each noeud As XmlNode In xNoeud
If noeud.LocalName <> "EPI" Then
Call RecursifChercheNodeRecord(noeud)
Else
'liste les valeurs d'un enreg. specifique
For Each noeudEnf As XmlNode In noeud.ChildNodes
strNom = noeudEnf.InnerText
If noeudEnf.OuterXml.Contains("CODE") Then
cbo_ListeCodeEPI.Items.Add(strNom)
cbo_ListeCodeEPI.DisplayMember = strNom
End If
Next
End If
Next
End Sub |
A propos bien que j'ai sejourne en france durant mes etudes a Paris,Lille et à Nantes (douce france...climat)......je n'ai jamais reussi à savoir ou se trouve Caen(en normandie) et comment on prononce Caen...joyeusete de l'orthographe francaise qui abuse des lettres.....
bon code.....