Problème de lecture XML avec VB.net

DrNeo2000 Messages postés 2 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 26 mai 2004 - 25 mai 2004 à 14:21
DrNeo2000 Messages postés 2 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 26 mai 2004 - 26 mai 2004 à 17:46
J'ai un soucis en VB.net :
je réalise une appli avec plusieurs combobox devant aller
chercher leur valeurs dans un fichier XML.(2valeurs
différentes). La première comboBox va chercher une
catégorie de produits et ensuite il faut que la deuxième
combobox liste les sous catégorie. Le problème est qu'il
faut que les sous catégories soit des sous catégories de
la catégorie selectionnée dans la première combobox.
J'espere que j'ai été clair (sinon, je détaillerai plus).
Pour se faire une idée voila le code de la premiere
combobox :
Private Sub SetCateg_load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
Dim Categreader As New XmlTextReader("d:\\gestmatos.xml") 'creation d'un DataSet
Dim cate As New ArrayList 'tableau de valeurs
de ComboBxCateg
Dim Categflag As Boolean 'flag de test pour
ajout de valeur dans la liste des catégories
Dim NomCate As String 'valeur à ajouter dans la
liste des catégories
Do While Categreader.Read
If Categreader.NodeType = XmlNodeType.Element
Then 'lecture du noeud XML
If Categreader.Name = "Categorie"
Then 'lecture de la valeur dans la balise
Categorie.Libelle
NomCate = Trim
(Categreader.ReadElementString) 'transfert valeur lu
dans XML vers variable nom
Categflag = True 'initialisation
du flag
For i As Integer = 0 To cate.Count
If cate.Contains(NomCate) Then
Categflag = True 'flag en
true = valeur non trouvée dans la liste des catégories
Else
Categflag = False 'la
valeur existe déja dans la liste des catégories
End If
Next i
If Not Categflag Then
cate.Add(NomCate) 'ajout de la
valeur dans la liste des catégories
End If
End If
End If
Loop
Categreader.Close() 'fermeture du DataSet
For i As Integer = 0 To cate.Count - 1
ComboBxCateg.Items.Add(cate(i))
Next
ComboBxCateg.SelectedIndex = 0
End Sub

et un extrait du fichier XML :

<?xml version="1.0" encoding="UTF-8"?>

4
<Reference>AI7</Reference>
<Descriptif>INTEL 865PE(sprigdale) FSB
800/533 mhz/P4-478/ DUAL DDR400/AGP 8X/4X 5pci/4ddr
dimms+dual sata raid 0+6-ch audio+3X1394
+lan+uGURU</Descriptif>
91.5


<Disponibilite></Disponibilite>
<Categorie>CARTE MERE</Categorie>
<SousCate>ABIT SOFT MENU III (jumperless)
2ANS GARANTIE Le RAID POUR TOUSISO-901</SousCate>
<Type>Intel</Type>
<Marque>ABIT</Marque>

Merci d'avance à qui pourra me donner son aide.

Christophe
.

Tout problème doit pour être un problème avoir une solution.
"Mess with the best or die like the rest "
Neo 2000
http://www.Docteur-Neo2000.com

2 réponses

wanbao Messages postés 14 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 6 juillet 2004
25 mai 2004 à 15:07
Je ne sais pas si cela peut t'aider, mais tu devrais utiliser la DLL msxml3.dll. Il s'agit d'un parseur XML distribué par Microsoft. Sur leur site, tu pourras trouver la SDK (très bien expliqué d'ailleurs) qui t'aideras un peu comme la SDK MSDN.
Voici le lien pour la SDK (tu dois déjà avoir msxml3.dll, sinon, un petit tour chez google te suffiras) http://www.microsoft.com/downloads/details.aspx?familyid=87925008-ec5a-4ff2-a7ef-549ab0394eda&languageid=f49e8428-7071-4979-8a67-3cffcb0c2524&displaylang=en

En fait il s'agit de fonction qui te permettent de bien sélectionner les balises XML et de récupérer leur contenu. De plus, elle a l'avantage de fonctioner sur toutes les plateformes Microsoft pourvu qu'elles possedent cette librairie (présente dans les versions 2000 et XP).

Tu as aussi la possiblité de chercher sur ce site un très bon exemple (dont je me suis largement inspiré pour écrire et lire dans un fichier XML) il est disponible ici : http://www.vbfrance.com/code.aspx?ID=5471

Je pense que tu ne devrais pas avoir trop de mal pour résoudre ton problème.

Bonne journée...
0
DrNeo2000 Messages postés 2 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 26 mai 2004
26 mai 2004 à 17:46
merci beaucoup pour cette aide
Christophe
Tout problème doit pour être un problème avoir une solution.
"Mess with the best or die like the rest "
Neo 2000
http://www.Docteur-Neo2000.com
0
Rejoignez-nous