[VB.NET] Problème lecture fichier XML dans Dataset
ludo7910
Messages postés5Date d'inscriptionvendredi 7 mars 2003StatutMembreDernière intervention25 août 2005
-
22 sept. 2003 à 18:17
cs_Shakta
Messages postés9Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 8 juillet 2008
-
8 juil. 2008 à 09:41
J'essaie de lire un fichier de récupérer les infos d'un fichier xml dans un dataset, je fais comme ceci:
Module Module1
Sub Main()
Dim DataSet1 As New DataSet
Try
DataSet1.ReadXml("fichier.xml")
Catch ex As Exception
Console.WriteLine(ex.ToString)
Exit Sub
End Try
End Sub
End Module
Là j'obtiens une exception:
"La même table (Item) ne peut être la table enfant dans deux relations imbriquées."
Après quelques recherches sur Internet, le problème vient du fait que 2 éléments inventory et order possèdent chacun un élément fils possédant tous les 2 le même nom, ici item. Ce qui pose problème.
J'ai trouvé des informations sur les site de Microsoft à l'adresse suivante:
tresorsdevie
Messages postés135Date d'inscriptionlundi 17 juin 2002StatutMembreDernière intervention20 juillet 2013 23 sept. 2003 à 15:47
lecture xml avec un dataset
Dim DtSet As DataSet = New DataSet()
DtSet.ReadXml(fichier.xml, XmlReadMode.Auto)
Dim ligne As DataRow
Dim vid,vqty as string
For Each ligne In DtSet.Tables("ITEM").Rows
vid=ligne.Item("id")
vqty=ligne.Item("qty")
traite(vid,vqty)
Next
lecture xml avec xmldocument
Dim XmlDoc As XmlDocument = New XmlDocument()
XmlDoc.Load("fichier.XML")
Dim element As XmlNodeList
Dim noeud As XmlNode
Dim noeudEnf As XmlNode
Dim vid, vqty As String
'****recupere les elements du tag "Item"
XmlDoc.DocumentElement.GetElementsByTagName("Item")
'pour tout les noeuds present dans l'element "Item"
'on recupere l'id et le qty
For Each noeud In element
For Each noeudEnf In noeud.ChildNodes
If noeudEnf.LocalName = "id" Then
vid = noeudEnf.InnerText
ElseIf (noeudEnf.LocalName = "qty") Then
vqty = noeudEnf.InnerText
End If
Next
'affichage des données
traite(vid, vqty)
Next
ludo7910
Messages postés5Date d'inscriptionvendredi 7 mars 2003StatutMembreDernière intervention25 août 2005 24 sept. 2003 à 10:00
Merci pour ta réponse,
mais reprend l'exemple que tu m'as donné sur les dataset et utilise le fichier xml de mon message. Bien que le fichier xml soit valide, il y a une exception en exécutant la méthode readxml de l'objet dataset. En renommant un des deux éléments item dans le fichier xml, il n'y a plus de problèmes. C'est ce problème que je voulais soulevé.
tresorsdevie
Messages postés135Date d'inscriptionlundi 17 juin 2002StatutMembreDernière intervention20 juillet 2013 8 juil. 2008 à 09:21
Voici les principales règles requises pour la validité d'un document XML :
• Chaque balise ouvrante doit avoir une balise une balise fermante correspondante.
• Les éléments ne doivent pas s'entre-mêler : cela signifie que si une balise ouvrante est présente dans un
élément, la balise fermante doit se trouver dans ce même élément.
• Il ne peut y avoir qu'un et un seul élément racine par document.
• La valeur d'un attribut doit être entourée de guillemets.
• Un élément ne doit pas avoir deux attributs de même nom.
donc si un fichier xml ne respect pas les regles .. on tombe sur ton probleme