cs_niko14
Messages postés209Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention10 octobre 2014
-
16 juil. 2007 à 09:11
cs_niko14
Messages postés209Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention10 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!!
cs_niko14
Messages postés209Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention10 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!!!
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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