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

Windows Forms Discussion :

DataSet, XML et XmlSchema


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de maVariable
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 105
    Points
    105
    Par défaut DataSet, XML et XmlSchema
    salut,

    je voudrais appliquer un schéma xml à un Dataset avant de lui faire passer les données.

    Données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <toto name="unNom" type="faitDesBlagues"/>
    Schéma :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0" standalone="yes"?>
    <xs:schema id="toto" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
      <xs:element name="toto" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
        <xs:complexType>
          <xs:attribute name="name" type="xs:string" use="required" />
          <xs:attribute name="type" type="xs:string" use="required" />
        </xs:complexType>
      </xs:element>
    </xs:schema>
    Lorsque j'essaye d'appliquer le schéma, rien ne plante, mais rien ne marche non plus => DataSet vide..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DataSet monDataSet = new DataSet();
    monDataSet.DataSetName = "toto";
    monDataSet.ReadXmlSchema("C:/xmlSchemaToto.xsd");
    XmlReader xmlToto = //ici chargement du fichier xml d'une ligne dans le xmlReader
    monDataSet.ReadXml(xmlToto, XmlReadMode.IgnoreSchema);
    J'ai fait de nombreux essais, dans tous les sens, mais je n'y arrive pas.. Quelqu'un aurait une idée de ce qui est mal fait dans le code ci-dessus ?

    merci d'avance

  2. #2
    Membre régulier Avatar de maVariable
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 105
    Points
    105
    Par défaut
    Après de nouveaux tests, je comprend un peu mieux ce qui se passe :
    Le schéma que je passe n'est pas completement rejeté. Mais il ne prend pas en compte les attributs. En clair, le schéma passé est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0" standalone="yes"?>
    <xs:schema id="toto" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
      <xs:element name="toto" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
        <xs:complexType>
          <xs:attribute name="name" type="xs:string" use="required" />
          <xs:attribute name="type" type="xs:string" use="required" />
        </xs:complexType>
      </xs:element>
    </xs:schema>
    et lui comprend
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0" standalone="yes"?>
    <xs:schema id="toto" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
      <xs:element name="toto" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
        <xs:complexType>
           <xs:choice minOccurs="0" maxOccurs="unbounded" />
        </xs:complexType>
      </xs:element>
    </xs:schema>
    Du coup, aucune donnée ne peut etre insérée..
    à part quelque chose comme <toto /> !!

    je cherche toujours...

  3. #3
    Membre régulier Avatar de maVariable
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 105
    Points
    105
    Par défaut
    Pour les curieux :

    pas vraiment de solution trouvée, plutôt une mise en conformité avec ce que le DataSet peut comprendre ..
    La première table, le noeud le plus haut du fichier XML, ne doit pas avoir de données. Car ce noeud là sera pris en compte comme étant l'ID du schéma.

    En clair, pour pouvoir faire fonctionner mon truc, je suis obligé de transformer mon fichier xml en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <titi>
       <toto name="unNom" type="faitDesBlagues"/>
    </titi>
    et le schéma qui permettra de prendre en compte ce fichier est donc :
    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
     
    <?xml version="1.0" standalone="yes"?>
    <xs:schema id="titi" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
      <xs:element name="toto">
        <xs:complexType>
          <xs:attribute name="name" type="xs:string" use="required" />
          <xs:attribute name="type" type="xs:string" use="required" />
        </xs:complexType>
      </xs:element>
      <xs:element name="titi" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="toto" />
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    ou encore :
    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
     
    <?xml version="1.0" standalone="yes"?>
    <xs:schema id="titi" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xs:element name="titi" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="toto">
              <xs:complexType>
                <xs:attribute name="name" type="xs:string" use="required" />
                <xs:attribute name="type" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:schema>

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

Discussions similaires

  1. Ecriture dans un Dataset XML
    Par Michel38 dans le forum C#
    Réponses: 5
    Dernier message: 25/06/2008, 14h05
  2. Visual Studio+ dataset + XML
    Par Braillane dans le forum C#
    Réponses: 3
    Dernier message: 10/09/2007, 11h46
  3. [C#]Aide pour gestion dataset / XML avec listview(débutant)
    Par Low-Fi dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/04/2006, 11h21
  4. [FLASH MX] DataSet & XML
    Par totoche dans le forum Flash
    Réponses: 13
    Dernier message: 05/10/2005, 15h53
  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