Extraire des données de plusieurs fichiers xml à la fois [Résolu]

kimioux - 21 mars 2013 à 22:46 - Dernière réponse :  Utilisateur anonyme
- 26 mars 2013 à 18:33
Bonjour
je voudrais savoir comment faire pour extraire les données de plusieurs fichiers xml en même temps sachant qu'il ont tous la même structure.

j'arrive juste a extraire les données d'un seul fichier .

le principe serait de faire un boucle en fonction du nombre des fichiers sélectionné et répéter l'opération plusieurs fois mais je n'y arrive pas .. quelqu'un peut m'aider ?

Merci !

code pour le code pour parcourir les fichiers

 
Public path As String

 For i = 1 To OpenFileDialog1.FileNames.Count
                OpenFileDialog1.Multiselect = True
                OpenFileDialog1.Title = ("Load your File")
                OpenFileDialog1.DefaultExt = "XML"
                OpenFileDialog1.FileName = String.Empty

                OpenFileDialog1.Filter = "Fichiers XML (*.XML) | *.XML|Tout les fichiers (*.*)|*.*"
                OpenFileDialog1.FilterIndex = 1

                If OpenFileDialog1.ShowDialog(Me) = DialogResult.OK Then
                    path = OpenFileDialog1.FileName
                End If
            Next

le code qui extrait les données est le suivant

 Dim XmlDoc As XmlDocument = New XmlDocument()
            XmlDoc.Load(path)

            Dim noeud, noeudEnf As XmlNode

            Dim element As XmlNodeList

            element = XmlDoc.DocumentElement.GetElementsByTagName("Esri")

            Dim a, b As String


            For Each noeud In element
                For Each noeudEnf In noeud.ChildNodes
                    If noeudEnf.LocalName = "CreaDate" Then
                        a = noeudEnf.InnerText

                    Else
                        If (noeudEnf.LocalName = "SyncOnce") Then
                            b = noeudEnf.InnerText
                        End If
                    End If


                Next

            Next
            'MsgBox(b & " à " & a)
            ListBox1.Items.Add(a)
            ListBox2.Items.Add(b)
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Utilisateur anonyme - 22 mars 2013 à 12:47
3
Merci
Bonjour,

Tu devrais lister le contenu du dossier contenant tes xml. Ton OpenFileDialog pourrait être remplacé par un FolderBrowserDialog pour la recherche du dossier à lister.

Cette liste de fichiers xml peut être obtenue avec la fonction GetFiles de la classe IO.DirectoryInfo.

Tu devrais mettre ton 2eme code sous forme de fonction renvoyant un tableau de string puisque le but est d'extraire 'a' et 'b' des xml.

private function extraitdonnees(path as string) as string()
   '...
   dim a,b as string
   '...
   return new string() {a,b}
end function


Lors de l'énumération des xml, tu n'auras plus qu'a appeler ta fonction pour récupérer les résultats.

for each fichier as io.fileinfo in new io.directoryinfo(path).getfiles("*.xml")
     dim data() as string = extraitdonnees(fichier.fullname)
     listbox1.items.add(data(0))
    listbox2.items.add(data(1)
next

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Meilleure réponse
Utilisateur anonyme - 22 mars 2013 à 20:03
3
Merci
Il suffit de rajouter IO.SearchOption.AllDirectories dans la surcharge de IO.DirectoryInfo.GetFiles() :

for each fichier as io.fileinfo in new io.directoryinfo(path).getfiles("*.xml",IO.SearchOption.AllDirectories)
     dim data() as string = extraitdonnees(fichier.fullname)
     listbox1.items.add(data(0))
    listbox2.items.add(data(1))  '<-- parenthèse manquante dans mon code précédent
next

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
0
Merci
Salut

Ca marche maintenant... Merci pour ton aide ça fait plaisir , bon courage a toi ! ;)

Le code en totalité pour ceux ou celles qui en auront besoin un jour


la fonction

private function extraitdonnees(path as string) as string()
 Dim XmlDoc As XmlDocument = New XmlDocument()
            XmlDoc.Load(path)

            Dim noeud, noeudEnf As XmlNode

            Dim element As XmlNodeList

            element = XmlDoc.DocumentElement.GetElementsByTagName("Esri")

            Dim a, b As String


            For Each noeud In element
                For Each noeudEnf In noeud.ChildNodes
                    If noeudEnf.LocalName = "CreaDate" Then
                        a = noeudEnf.InnerText

                    Else
                        If (noeudEnf.LocalName = "SyncOnce") Then
                            b = noeudEnf.InnerText
                        End If
                    End If


                Next

            Next

   return new string() {a,b}
end function



le code du bouton

for each fichier as io.fileinfo in new io.directoryinfo(path).getfiles("*.xml")
     
Dim path As String = folderbrowserdialgo1.SelectedPath
dim data() as string = extraitdonnees(fichier.fullname)
listbox1.items.add(a)
listbox2.items.add(b)
next
Commenter la réponse de kimioux
0
Merci
Re bonjour

Désolé d'en demander tant .. comment je peux faire pour parcourir les sous dossier qui sont dans mon répertoire ? parce que là je viens d'essayer et il prend que le répertoire principale et pas les sous dossier !

Merci !
Commenter la réponse de kimioux
0
Merci
Euh je viens de lire sur le forum qu'il y avais la fonction GetDirectories qui retourne le sous répertoire actif ..
mais je ne sais pas comment l’intégrer ..

avez vous des idées comment faire ?

Merci
Commenter la réponse de kimioux
0
Merci
Ah d'accord .. Merci Bcp pour ton aide précieuse , j'essaierais ça dans la journée et je poste tout le code.
Commenter la réponse de kimioux
0
Merci
Bonjour j'ai eu un petit soucis avec le code ...
je voulais extraire une données d'un xml dans le shéma est le suivant:

mais avec mon code ça me renvoie une erreur ..

Sait tu comment faire ?


Esri--> Dataproperties --> CoordRef --> Projcsn --> "x"

<esri>
  <dataproperties>
    <coordRef>
      
           ma valeur
      


    </coordRef>
  </dataproperties>

Merci
</esri>

:
Commenter la réponse de kimioux
Utilisateur anonyme - 26 mars 2013 à 18:33
0
Merci
je voudrais savoir comment faire pour extraire les données de plusieurs fichiers xml en même temps sachant qu'il ont tous la même structure.


If noeudEnf.LocalName = "CreaDate" Then
                        a = noeudEnf.InnerText

         Else
            If (noeudEnf.LocalName = "SyncOnce") Then



<esri>
  <dataproperties>
    <coordRef>
      
           ma valeur
      


    </coordRef>
  </dataproperties>

Merci
</esri>


Là, nous n'avons plus du tout la même structure !

S'il s'agit d'un autre problème, merci d'ouvrir un nouveau sujet
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.