IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual Studio Discussion :

[VSNET05]XmlDataDocument et Dataset


Sujet :

Visual Studio

  1. #1
    Membre régulier Avatar de Pasiphae
    Inscrit en
    Octobre 2003
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 110
    Points : 104
    Points
    104
    Par défaut [VSNET05]XmlDataDocument et Dataset
    Bonjour à tous.

    J'essaie d'utiliser un dataset lié à un xmldatadocument. Malheureusement je me heurte a un souci de taille, je me permets de l'exposer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim xmlDoc As XmlDataDocument = New XmlDataDocument
            Dim xmlData As DataSet = xmlDoc.DataSet
     
            'Charge le schema de données
            xmlData.ReadXmlSchema("Users.xsd")
     
            'Charge les données xml
            xmlDoc.Load("Users.xml")
     
     
            Dim tb As DataTable = xmlData.Tables.Item(0)
            tb.Rows.Item(0).Item("Nom") = "Test"

    Apparemment mon dataset est bien créé mais je dois avoir un probleme de schema xsd (ou alors j ai oublié quelque chose), parce que le dataset ne contient aucune table.
    J'ai contourné en restant + traditionnelle genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    noeud.Attributes.GetNamedItem("Nom").InnerXml = "Test"
    Mais j aurais trouvé ça super pratique de passer par des datatable, datarow etc... donc si quelqu un a ete confronté au souci (ou que ma grosse betise creve l ecran...), ça serait sympa de partager l info, parce que je vois pas là.

    Par avance merci.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Un des exemples fourni par MSDN (cf. XmlDataDocument.DataSet property) semble fonctionner. Tu as peut être effectivement une erreur dans ton schéma xsd.

    J'ai fait le test en C#:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    XmlDataDocument xmlDoc = new XmlDataDocument();
     
    //Charge le schema de données
    xmlDoc.DataSet.ReadXmlSchema("Users.xsd");
     
    //Charge les données xml
    xmlDoc.Load("Users.xml");
     
    DataTable tb = xmlDoc.DataSet.Tables["Users"];
    tb.Rows[0]["Name"] = "Test";
    Avec le schéma suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
     
    	<xs:element name="Users" type ="UsersType"/>
     
    	<xs:complexType name="UsersType">
    		<xs:sequence maxOccurs="unbounded">
    			<xs:element name="Nom" type="xs:string"/>
    		</xs:sequence>
    	</xs:complexType>
     
    </xs:schema>
    Et le fichier XML correspondant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <Users>
    	<Name>Toto</Name>
    </Users>
    Et ça fonctionne nickel

  3. #3
    Membre régulier Avatar de Pasiphae
    Inscrit en
    Octobre 2003
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 110
    Points : 104
    Points
    104
    Par défaut
    Merci beaucoup. Maintenant que j ai la certitude que le code n est pas incorrect, je vais tenter de chercher du coté du schéma, ça me donne une bonne piste !

    Mon schema c est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema id="UserGrids" targetNamespace="http://tempuri.org/UserGrids.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/UserGrids.xsd" xmlns:mstns="http://tempuri.org/UserGrids.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:complexType name="Formulaire">
        <xs:sequence>
          <xs:element name="Nom" type="xs:string" />
          <xs:element name="Grille" type="Grille" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="Grille">
        <xs:sequence>
          <xs:element name="Nom" type="xs:string" />
          <xs:element name="Filtre" type="xs:string" />
          <xs:element name="Colonnes">
            <xs:complexType>
              <xs:sequence />
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="Colonnes">
        <xs:sequence>
          <xs:element name="Colonne" type="Colonne" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="Colonne">
        <xs:sequence>
          <xs:element name="Nom" type="xs:string" />
          <xs:element name="Entete" type="xs:string" />
          <xs:element name="Visible" type="xs:boolean" />
          <xs:element name="Index" type="xs:int" />
        </xs:sequence>
      </xs:complexType>
    </xs:schema>
    Le xml donnerait quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?xml version="1.0" encoding="utf-8" ?>
    <UserGrids>
      <Formulaire Nom ="TiersDetails">
      <Grille Nom ="TiersDataGridView" Filtre="">
        <Colonnes>
          <Colonne Nom ="TiersID" Entete ="Identifiant" Visible="True" Index="0" />
          <Colonne Nom ="LibelleType" Entete ="Type" Visible="True" Index="1" /> 
        </Colonnes>
      </Grille>
        <Formulaire Nom="Groupe">
          <Grille Nom="GroupeGridView" Filtre="">
            <Colonnes>
              <Colonne Nom ="GroupeID" Entete ="Identifiant" Visible ="False" Index="0"/>
              <Colonne Nom ="LibelleGpe" Entete ="Libellé" Visible ="True" Index="1"/>
            </Colonnes>
          </Grille>
        </Formulaire>
      </Formulaire>
    </UserGrids>

  4. #4
    Membre régulier Avatar de Pasiphae
    Inscrit en
    Octobre 2003
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 110
    Points : 104
    Points
    104
    Par défaut
    Bon a priori, ca viendrait bien de là.
    Vu que je ne vois pas l erreur, j ai utilisé un petit logiciel qui genere le xsd depuis le xml (et en + version dataset, que demande le peuple).
    Super utile, ca peut servir a d autres voici le lien :
    http://msdn.microsoft.com/library/fr...toolxsdexe.asp

    Merci encore et bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.Net] XMLDataDocument,DataSet et Type de colonne
    Par TSalm dans le forum Windows Forms
    Réponses: 1
    Dernier message: 31/07/2006, 09h17
  2. Le dataset.bof ne répond plus.
    Par fplanglois dans le forum Bases de données
    Réponses: 6
    Dernier message: 23/03/2004, 09h45
  3. Modifier l'ordre des Fields d'un dataset
    Par teska dans le forum Bases de données
    Réponses: 3
    Dernier message: 22/03/2004, 16h38
  4. [VB.net][PostgreSQL & ODBC] DataSet => NO_DAT
    Par rebolon dans le forum Accès aux données
    Réponses: 2
    Dernier message: 28/01/2004, 09h01
  5. [FLASH MX 2004 pro] DATASET, XML, ASP
    Par kenshi dans le forum Flash
    Réponses: 4
    Dernier message: 27/01/2004, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo