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

Services Web Discussion :

[C#] Comment obtenir un flux XML valide ?


Sujet :

Services Web

  1. #1
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 7
    Par défaut [C#] Comment obtenir un flux XML valide ?
    Bonjour à tous,

    Dans le cadre d'un projet d'interrop, j'ai besoin d'extraire des données d'un annuaire LDAP depuis un webservice. Si l'extraction des données LDAP ne me pose aucun problème, je me pose énormément de question sur le format du flux XML que le webservice doit renvoyer.

    Par exemple, imaginons un webservice qui renvoie les informations d'un agent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <agent>
       <matricule>1</matricule>
       <nom>Toto</nom>
       <telephone>0600</telephone>
    </agent>
    Comme les données brut renvoyés par LDAP ne sont pas très exploitable, ma première idée fut de construire à la mimine un flux XML identique à celui de ci-dessus en utilisant la classe System.XML.

    Facile ! Mais un collègue me dit: "il est où le schéma xsd ?"

    Pas faux, alors je pars sur une deuxième idée. Je créé un datatable avec les colonnes qui vont bien, j'insère les données dans la table, je mets la table dans un dataset et je renvoie le dataset !
    Oh miracle ! J'obtiens un magnifique flux qui contient à la fois la description du flux (le schema avec les balises xs:...) et les données derrière.

    Seulement je suis confronté à un problème, en effet dans les annuaires LDAP, certains champs peuvent être multivalué, ainsi je pourrais obtenir les données suivantes pour un agent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <agent>
       <matricule>1</matricule>
       <nom>Toto</nom>
       <telephone>0600</telephone>
       <telephone>0602</telephone>
    </agent>
    Ce type d'informations n'est donc plus compatible avec la logique datatable et dataset. (à moins de passer par plusieurs tables et faire tout un bazar relationnel)
    La dernière idée en date donc, c'est de construire à la fois le schéma à la main et faire suivre cela par les données.

    Malheuresement si d'un côté j'ai mon objet XMLSchema avec mon schema et mon objet XMLDocument avec mes données, je n'arrive pas à joindre les 2 bouts et à tout renvoyer.

    De plus je ne suis même pas sur de la validité de flux une fois que j'aurais joints les 2 bouts.

    J'en viens même à me demander si cela est vraiment nécessaire que je renvois un schéma dans mon flux ?

    Voilà beaucoup de blabla pour un problème qui n'en est peut-être pas un. Je fais donc appel aux experts du C# et du XML pour avoir leur avis sur la question.

    Merci ![/code]

  2. #2
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Outil XML Schema Definition Tool (Xsd.exe)

    Notamment si tu as déjà réalisé le xsd alors
    La commande suivante génère un DataSet correspondant au schéma spécifié en langage C# et l'enregistre sous XSDSchemaFile.cs dans le répertoire en cours.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xsd /dataset /language:CS XSDSchemaFile.xsd

  3. #3
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 7
    Par défaut
    Merci,

    Je suis finalement passé par la méthode ReadXML de l'objet DataSet. En utilisant cette méthode avec le paramètre "XmlReadMode.InferSchema" et lorsque je renvois le DataSet j'obtiens un schéma et des données tout à fait correct vis à vis de mes besoins!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/06/2008, 16h13
  2. [XML] Comment envoyer un flux XML avec SOAP et PHP5 ?
    Par lehic dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/06/2007, 16h58
  3. Comment indenter un flux XML avant affichage ?
    Par danyboy85 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 05/12/2006, 11h30
  4. [C#] Comment parser un flux XML ?
    Par Dunkan dans le forum C#
    Réponses: 1
    Dernier message: 22/09/2006, 13h32
  5. [DOM] Comment créer des flux XML en java ?
    Par nean_j dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 27/04/2004, 12h00

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