Load d'un fichier xml

Résolu
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014 - 16 juil. 2007 à 09:11
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014 - 16 juil. 2007 à 09:47
Salut tout le monde!
voila je me mets doucement au xml por un projet de stage , mais moi jusqu'alors j'etais plutot C#, et la j'ai un petit probleme que je comprends pas car pour moi tout est ok!!!!

Voila j'ai fait une toute petite appli pour tester le load de fichier xml et l'exploitation des données.
J'ai stocké mon fichier xml dans les dossier debug (nom_projet/bin/debug) et voila mon code:

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Création d'une nouvelle instance du membre xmldocument
        Dim XmlDoc As XmlDocument = New XmlDocument()

        'Dim XmlDoc As XmlDocument = New XmlDocument()
        'XmlDoc.Load(Application.StartupPath & "\test.xml")

        'Chargement du doc XML
        XmlDoc.Load(Application.StartupPath & "\test.xml")

        'Instanciation d'un noeud de doc XML
        Dim element As XmlNodeList
        element = XmlDoc.DocumentElement.GetElementsByTagName("musee")

        'Instanciation d'un noeud parent et un noeud enfant
        Dim noeud, noeudenf As XmlNode

        'Parcourir un a un tous les noeuds " parent " (noeud) compris dans la liste element
        'Pour chaque un de ces noeuds, récupérer la liste des noeuds " enfants " (noeudEnf)
        'Parcourir un a un tous les noeuds enfants (noeudEnf) contenu dans cette liste
        'Récupérer grâce a la propriété LocalName le nom de la balise du noeud " enfant " sélectionné
        'Récupérer le contenu de la balise à l'aide de la propriété InnerText.

        Dim NomMusee, DernierScan, HeureLastScan As String
        Dim NbScans, PassVendus As Integer

        For Each noeud In element
            For Each noeudenf In noeud.ChildNodes
                If noeudenf.LocalName = "nom" Then
                    NomMusee = noeudenf.InnerText

                Elseif(noeudenf.LocalName = "nbscans") Then
                    NbScans = Int32.Parse(noeudenf.InnerText)

                ElseIf (noeudenf.LocalName = "passvendus") Then
                    PassVendus = Int32.Parse(noeudenf.InnerText)

                ElseIf (noeudenf.LocalName = "dernierscan") Then
                    DernierScan = noeudenf.InnerText

                ElseIf (noeudenf.LocalName = "heuredernierscan") Then
                    HeureLastScan = noeudenf.InnerText

                End If
                MsgBox(NomMusee & " - " & NbScans & " - " & PassVendus & " - " & DernierScan & " - " & HeureLastScan)
            Next
        Next

    End Sub
End Class

Le probleme c'est que quand je compile ca il me dit "L'exception XmlException n'a pas été gerée" Il existe un caractère non valide dans le codega donné.Ligne 18, position 9."
Meme quand je mets un 2eme "" devant le nom de mon fichier xml il me sort la meme ereur et quand je n'en mets pas du tout il ne le trouve pas car il colle direct le nom du fichier a debug (debugtest.xml).

Si une ame charitable voulait bien m'aider j'apprecierai beaucoup!!

Merci a vous!

Niko

Niko14

7 réponses

cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014
16 juil. 2007 à 09:35
merci pour ton aide Renfield, mais en fait je viens de trouver d'ou ca venait!!
en fait ca venait du doc xml car si tu regardes le dernier nom de musée c'est Mmorial, mais en fait c'était ecrit Mémorial à la base et la lui il avait pas reconnu le é donc c'etait pour ca qu'il y avait une exception!!!!
ah lala!!!

merci et a bientot pour un nouveau coup de main

Niko14
3
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014
16 juil. 2007 à 09:11
D'ailleurs pardon mais ce à quoi je me mets doucement c'est au VB.NET (conf debut du mesage precedent!!!)

Niko14
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 juil. 2007 à 09:15
ton XML est valide ?
0
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014
16 juil. 2007 à 09:18
bah a priori oui!
voila le contenu du fichier:

<?xml version="1.0" encoding="utf-8" ?>
<stats>
    <musee id="9">
        <nom>Arromanches 360</nom>
        <nbscans>6831</nbscans>
        1936

        <dernierscan>12-07-2007</dernierscan>
        <heuredernierscan>17:40:55</heuredernierscan>
    </musee>
    <musee id="7">
        <nom>Centre Juno Beach</nom>
        <nbscans>4113</nbscans>
        1850

        <dernierscan>12-07-2007</dernierscan>
        <heuredernierscan>17:39:00</heuredernierscan>
    </musee>
    <musee id="21">
        <nom>Mmorial de Montormel</nom>
        <nbscans>205</nbscans>
        32

        <dernierscan>08-07-2007</dernierscan>
        <heuredernierscan>14:25:16</heuredernierscan>
    </musee>
</stats>

Niko14
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 juil. 2007 à 09:29
passé sous VB6, corrigé un brin, fonctionne nikel...

a noter que sous VB6, c'est un DOMDocument, pas un XMLDocument....



Private Sub Form_Load()
Dim oXmlDoc As DOMDocument
Dim element As IXMLDOMNodeList
'Création d'une nouvelle instance du membre xmldocument
Set oXmlDoc = New DOMDocument

'Chargement du doc XML
oXmlDoc.Load "C:\a.xml"

'Instanciation d'un noeud de doc XML

Set element = oXmlDoc.documentElement.getElementsByTagName("musee")

'Instanciation d'un noeud parent et un noeud enfant
Dim noeud As IXMLDOMNode, noeudenf As IXMLDOMNode

'Parcourir un a un tous les noeuds " parent " (noeud) compris dans la liste element
'Pour chaque un de ces noeuds, récupérer la liste des noeuds " enfants " (noeudEnf)
'Parcourir un a un tous les noeuds enfants (noeudEnf) contenu dans cette liste
'Récupérer grâce a la propriété LocalName le nom de la balise du noeud " enfant " sélectionné
'Récupérer le contenu de la balise à l'aide de la propriété InnerText.

Dim NomMusee As String, DernierScan As String, HeureLastScan As String
Dim NbScans As Integer, PassVendus As Integer

For Each noeud In element
For Each noeudenf In noeud.childNodes
Select Case noeudenf.nodeName
Case "nom"
NomMusee = noeudenf.Text
Case "nbscans"
NbScans = CInt(noeudenf.Text)
Case "passvendus"
PassVendus = CInt(noeudenf.Text)
Case "dernierscan"
DernierScan = noeudenf.Text
Case "heuredernierscan"
HeureLastScan = noeudenf.Text
End Select
Next
MsgBox NomMusee & " - " & NbScans & " - " & PassVendus & " - " & DernierScan & " - " & HeureLastScan
Next
End Sub
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 juil. 2007 à 09:38
ok, pour ca que j'ai pas eu de soucis, le 'é' avait disparu ^^
0
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014
16 juil. 2007 à 09:47
Eh oui il steak'haché le petit malin!!
merci de ton coup de main!

Niko14
0
Rejoignez-nous