Load d'un fichier xml [Résolu]

cs_niko14 209 Messages postés jeudi 12 janvier 2006Date d'inscription 10 octobre 2014 Dernière intervention - 16 juil. 2007 à 09:11 - Dernière réponse : cs_niko14 209 Messages postés jeudi 12 janvier 2006Date d'inscription 10 octobre 2014 Dernière intervention
- 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
Afficher la suite 

7 réponses

Répondre au sujet
cs_niko14 209 Messages postés jeudi 12 janvier 2006Date d'inscription 10 octobre 2014 Dernière intervention - 16 juil. 2007 à 09:35
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_niko14
cs_niko14 209 Messages postés jeudi 12 janvier 2006Date d'inscription 10 octobre 2014 Dernière intervention - 16 juil. 2007 à 09:11
0
Utile
D'ailleurs pardon mais ce à quoi je me mets doucement c'est au VB.NET (conf debut du mesage precedent!!!)

Niko14
Commenter la réponse de cs_niko14
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 16 juil. 2007 à 09:15
0
Utile
ton XML est valide ?
Commenter la réponse de Renfield
cs_niko14 209 Messages postés jeudi 12 janvier 2006Date d'inscription 10 octobre 2014 Dernière intervention - 16 juil. 2007 à 09:18
0
Utile
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
Commenter la réponse de cs_niko14
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 16 juil. 2007 à 09:29
0
Utile
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
Commenter la réponse de Renfield
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 16 juil. 2007 à 09:38
0
Utile
ok, pour ca que j'ai pas eu de soucis, le 'é' avait disparu ^^
Commenter la réponse de Renfield
cs_niko14 209 Messages postés jeudi 12 janvier 2006Date d'inscription 10 octobre 2014 Dernière intervention - 16 juil. 2007 à 09:47
0
Utile
Eh oui il steak'haché le petit malin!!
merci de ton coup de main!

Niko14
Commenter la réponse de cs_niko14

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.