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 :

[C#] dataset et xmlSchema


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut [C#] Comment remplir un dataset à partir d'un xmlschema ?
    Bonjour les amis !

    J'ai un peu de mal avec xml et les schemas xml.

    J'ai un fichier xml (un fichier de log)

    Je le mets dans un dataset de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     
    DATASET.ReadXml(file_log,XmlReadMode.Auto);

    Pour voir la structure de mon fichier xml, je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     
    MessageBox.Show(DATASET.GetXmlSchema());

    Et j'obtiens cette structure de document:
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     
    <?xml version="1.0" encoding="utf-16"?>
    <xs:schema id="LOG" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
      <xs:element name="LOG" msdata:IsDataSet="true" msdata:Locale="en-US">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="RUN">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SID" type="xs:string" minOccurs="0" />
                  <xs:element name="LOGIN" type="xs:string" minOccurs="0" />
                  <xs:element name="PORT" type="xs:string" minOccurs="0" />
                  <xs:element name="DATE_START" type="xs:string" minOccurs="0" />
                  <xs:element name="HOUR_START" type="xs:string" minOccurs="0" />
                  <xs:element name="DATE_END" type="xs:string" minOccurs="0" />
                  <xs:element name="HOUR_END" type="xs:string" minOccurs="0" />
                  <xs:element name="STATUS" type="xs:string" minOccurs="0" />
                  <xs:element name="FILE" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="DIRECTORY" type="xs:string" minOccurs="0" />
                        <xs:element name="NAME" type="xs:string" minOccurs="0" />
                        <xs:element name="WEIGHT" type="xs:string" minOccurs="0" />
                        <xs:element name="MD5" type="xs:string" minOccurs="0" />
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="ERROR" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="error" type="xs:string" minOccurs="0" />
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:schema
    Je vourdrais donc savoir s'il est possible d'extraire (à partir de DATASET) un autre dataset qui contient tous les "RUN" pour lequels l'élément name contient un "type complex" non vide ...

    De manière générale, à quoi sert d'extraire un xml schema et que peut on faire avec ??

    Merci grandement pour votre aide !!

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 68
    Par défaut
    Bonjour,

    Normalement l'utilisation d'un fichier XML s'utilise avec un schéma XML.
    Celà veut dire que tu contruit un fichier XML contenant un certain nombre d'information simple ou complexe, même tres complexe en fonction de ton besoin.
    Normalement, afin de vérifier la structure et l'intégrité des données du fichiers XML, un schéma XML est crée.
    Le schéma reprensente la structure, et la definition du typage des valeurs.


    Exemple :
    <xs:element name="RUN">
    Tu peut par exe définir ici beaucoup de chose :
    - limitation du nombre de caractère
    - une liste de choix
    - autres...
    Ainsi si tu possède un fichier XML mal remplie ou qui contient des erreurs par rapports à la définition du schéma l'API XML s'occupe de tout,et renvoi l'erreur.

    Dans ton cas, c'est le DATASET qui renvoi le shéma, il est contruit dynamiquement en analysant le contenu XML, mais il est plus judicieux de créer le fichier schéma XML qui sera plus restrictif que celui renvoyé par le DATASET.

    Pour l'extraction d'une partie de ton fichier XML, je pense que la solution la plus simple est d'analyser dans XMLREader le noeud en question, et vérifier si il contient un type complexe non null

    ---> extrait ton arbre XML du dataSet vers un XMLReader.
    ---> associé à ce XMLREADER une branche du schéma complex type n'autorisant pas la valeur null sur un champ
    ---> et valide le XMLReader, si une erreur c'est que ton bout d'arbre XML ne correspond pas à ton schéma restrictif.
    ---> recommemnce l'etape 1 avec un autre bout arbre.

    j'espere t'avoir aider

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut
    Merci heavydrinker !!
    C'est beaucoup plus clair maintenant !!

Discussions similaires

  1. DataSet, XML et XmlSchema
    Par maVariable dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/07/2009, 10h38
  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