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

Linq Discussion :

Récupérer le type d'un élément XML (définit dans le XSD)


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut Récupérer le type d'un élément XML (définit dans le XSD)
    Salut,

    J'essaie de récupérer la valeur ainsi que le type des éléments XML. J'utilise un schéma XSD.

    J'ai vu qu'il existait Linq To XSD qui a l'air super pratique pour typer les valeurs XML mais qui est encore en version béta (snif...).
    Je ne peux donc pas me rabattre sur cette solution.

    Le schéma étant créé par l'utilisateur, je ne connais pas les types à l'avance et doit donc les retrouver. Je n'ai pas tellement trouver d'exemples sur l'utilisation de schéma xsd (tous les tutos disant "pour des raisons de simplicité, les schémas xsd ne seront pas abordés..."). Quelqu'un sait-il comment s'y prendre pour récupérer le type ?

    Pour info, voilà le genre de schéma xsd sur lequel je peux tomber :
    Code xml : 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
    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema
      id="XMLSchemaRens"
      elementFormDefault="qualified"
      xmlns="http://tempuri.org/XMLSchemaRens.xsd"
      xmlns:mstns="http://tempuri.org/XMLSchemaRens.xsd"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
    >
      <xs:element name="Rens">
        <xs:complexType>
          <xs:sequence>
     
            <xs:element name="Maintenance" minOccurs="0" >
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="sce_TAG" type="xs:unsignedInt" minOccurs="0" />
                  <xs:element name="mainteneur" type="xs:string" minOccurs="0" />
                  <xs:element name="garantie_debut" type="xs:date" minOccurs="0" />
                  <xs:element name="garantie_duree" type="xs:integer" minOccurs="0" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
     
          </xs:sequence>
        </xs:complexType>
      </xs:element>
     
    </xs:schema>

    Voilà Existe-t-il une façon simple de récupérer les types définis ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 415
    Par défaut
    Bonjour,

    Sur un XmlNode, tu as une propriété "SchemaInfo".

    Est-ce que cela ne suffit pas à ta question ?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Je regarderai, merci

    Je ne connais pas... et à vrai dire je suis loin d'avoir fait le tour des fonctionnalités XML. Je vous tiens au courant

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    En fait la propriété ValueType du XmlReader permet de récupérer le type .

    J'ai fait plusieurs modifications dans le code que j'avais et je ne sais pas trop dire ou cela ne fonctionnait pas Peut-être que j'avais mal initialisé mon XmlReaderSettings.

    Enfin voilà... je donne un petit bout de code qui permet de récupérer le type d'un élément (pour ceux que ça intéresse) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
          XmlReaderSettings settings = new XmlReaderSettings();
          settings.Schemas.Add( null,
                                @"..\..\XMLSchema1.xsd" );
          settings.Schemas.Compile();
          settings.ValidationType = ValidationType.Schema;
          XmlReader xtr = XmlReader.Create( @"..\..\XMLFile1.xml", settings );
          while( xtr.Read() ) {
            if( xtr.NodeType == XmlNodeType.Element ) {
              Type t = xtr.ValueType;
            }
          }

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

Discussions similaires

  1. [JDOM] Récupérer valeur d'un élément XML avec JDOM
    Par HackerNet dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 22/06/2013, 03h35
  2. Réponses: 0
    Dernier message: 02/05/2012, 11h04
  3. [Débutant] Récupérer élément xml
    Par pitite dans le forum VB.NET
    Réponses: 6
    Dernier message: 17/04/2012, 08h43
  4. [SimpleXML] Récupérer l'attribut d'un élément xml
    Par yann123456 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 01/12/2008, 19h00
  5. Récupérer le type de démarrage d'un service
    Par Nathan dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 09/04/2004, 15h07

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