[VB.NET] Problème lecture fichier XML dans Dataset

ludo7910 Messages postés 5 Date d'inscription vendredi 7 mars 2003 Statut Membre Dernière intervention 25 août 2005 - 22 sept. 2003 à 18:17
cs_Shakta Messages postés 9 Date d'inscription mercredi 19 novembre 2003 Statut Membre Derniè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."

Le fichier XML correspondant est:

<?xml version= "1.0" ?>
<OrdersInventoryData>
   <Order>
      
          1 
         <qty>5</qty>
      
   </Order>
   
      
         1
         <qty>100</qty>
      
   
</OrdersInventoryData>


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:

http://support.microsoft.com/default.aspx?scid =kb EN-US 325696

Mais rien n'est dit sur la façon de résoudre le problème, sans modifier le fichier source xml bien sur.

Quelqu'un a t'il deja eu a faire face à ce problème? et quelle est la solution pour s'en sortir avec les dataset?

Merci d'avance.

7 réponses

tresorsdevie Messages postés 135 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 20 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

Les tuts Xml

une source exemple

a+,chris
0
ludo7910 Messages postés 5 Date d'inscription vendredi 7 mars 2003 Statut Membre Dernière intervention 25 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é.
0
tresorsdevie Messages postés 135 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 20 juillet 2013
24 sept. 2003 à 20:52
bien, noté ;)

La nature, un atout pour la vie

Programmation VB.NET
http://membres.lycos.fr/betatestvb
0
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 5
19 juin 2004 à 14:55
hum et donc la solution finalement est? ( j'ai le même soucis)
0

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

Posez votre question
cs_Shakta Messages postés 9 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 8 juillet 2008
7 juil. 2008 à 13:03
As tu trouver une reponse car j'ai le meme probleme avec des xsd bien complexe
?
0
tresorsdevie Messages postés 135 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 20 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
0
cs_Shakta Messages postés 9 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 8 juillet 2008
8 juil. 2008 à 09:41
Merci de ta réponse.. j'avais bien compris. Du coup il n'y a pas de solution.
Donc dot.net n'est pas w3c
0
Rejoignez-nous