Problème lecture d'un fichier xml [Résolu]

Signaler
Messages postés
4
Date d'inscription
mercredi 8 mars 2006
Statut
Membre
Dernière intervention
29 novembre 2006
-
Messages postés
4
Date d'inscription
mercredi 8 mars 2006
Statut
Membre
Dernière intervention
29 novembre 2006
-
bonjour tout le monde, vu que c'est mon premier poste je tenais a vous dire que ce site est vraiment géniale pour apprendre a programmer!

voilà je vous expose mon problème j'essaie de lire un fichier xml et d'écrire dans un fichier texte certaines données :

le fichier xml :

<?xml version="1.0" encoding="UTF-8"?>
<TREE_MENU colorLiv="0099FF|669999|66CC66|FFFF99|00FFFF">
<TREE_1 URL="index.html">PRÉSENTATION</TREE_1>
<TREE_1 URL="services.html">NOS SERVICES</TREE_1>
<TREE_1>NOTRE MAGASIN
   <TREE_2 URL="atelier.html">ATELIER</TREE_2>
   <TREE_2 URL="bureau.html">BUREAU</TREE_2>
</TREE_1>
<TREE_1 URL="contact.html">CONTACTEZ-NOUS</TREE_1>
</TREE_MENU>

le programme :

Private Sub import_xml(ByVal le_xml As String)
   Dim reader As XmlTextReader = New XmlTextReader(le_xml)
   Dim lexml As System.IO.StreamWriter
   lexml = My.Computer.FileSystem.OpenTextFileWriter("c:\test.txt", False)
   Dim i, j As Integer
   i = -1
   Do While (reader.Read())
      If reader.NodeType = XmlNodeType.Element Then
         If reader.Name <> "TREE_MENU" Then

          If reader.Name = "TREE_1" Then
                  i = i + 1
                  j = -1
         End If

         If reader.Name = "TREE_2" Then
            j = j + 1
         End If

         While (reader.MoveToNextAttribute()) ' Read attributes
            lexml.WriteLine(reader.ReadString)
         End While
         lexml.WriteLine(i)
         lexml.WriteLine(j)

      End If
   End If
   Loop
   lexml.Close()

End Sub

et sa me donne en sortie sa :

PRÉSENTATION
0
-1
NOS SERVICES
1
-1
2
-1
ATELIER
2
0
BUREAU
2
1
CONTACTEZ-NOUS
3
-1

mes compteurs sont bon, ils ont les valeurs souhaité mais par contre je n'arrive pas a avoir la valeur "notre magasin"sa ne m'affiche rien et sa va directement a l'affichage du compteur.
est ce que quelqu'un pourrait m'aider? merci d'avance

7 réponses

Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2
non mais cest normal que tu n'arrives pas alire NOTRE MAGASIN cette valeur puisque le noeud TREE_1 est un noeud ayant des noeud enfants (TREE_2)

il faudrait par exemple que tu definisse un attribut a TREE_1 contenant la valeur NOTRE MAGASIN 
++
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
116
Trouve toi plutôt un parseur XML au lieu de refaire le code à la main, ce sera plus pratique à utiliser !
Messages postés
4
Date d'inscription
mercredi 8 mars 2006
Statut
Membre
Dernière intervention
29 novembre 2006

un parseur?? en faite moi je veux extraire des donnée pour les mettre dans un objet, donc sa m'arrangerait bien de pouvoir juste avoir cette ligne c'est pour sa.
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
116
bah oui, c'est le but du parseur justement : tu lui donne un fichier xml, il te le lit, extrait les champs, et tu n'a plus qu'à lire les propriétés du parseur.
Il doit en exister plusieurs en vb6 je pense.
Messages postés
4
Date d'inscription
mercredi 8 mars 2006
Statut
Membre
Dernière intervention
29 novembre 2006

Je suis en train de faire ce programme en vb .net et j'utilise déjà un parseur  non ? XmlTextReader est un membre de la classe xml reader qui est un parseur
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
116
arf, dsl je croyais que tu était en vb6, connais pas le vb.net, je peux pas te dire mais sûrement !
Messages postés
4
Date d'inscription
mercredi 8 mars 2006
Statut
Membre
Dernière intervention
29 novembre 2006

merci j'ai réussi en changeant le xml