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

C# Discussion :

[XMLSerializer] Sérialiser une liste d'éléments en tant que contenu du noeud


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 163
    Points : 77
    Points
    77
    Par défaut [XMLSerializer] Sérialiser une liste d'éléments en tant que contenu du noeud
    Bonjour,

    Je souhaite sérialiser avec XMLSerializer une classe dont une propriété est une liste d'élément.
    Chaque élément est une classe de base dont dérivent plusieurs autres classes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class MyClass
    {
        [XmlArray]
        public List<Data> DataList;
     
        ...
    }
     
    public class Data1 : Data { ... }
    public class Data2 : Data { ... }
    Le résultat obtenu est celui-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <MyClass>
        <DataList>
            <Data1 ... />
            <Data1 ... />
            <Data2 ... />
        </DataList>
    </MyClass>
    J'aimerais obtenir le résultat suivant, c'est à dire ne plus faire apparaitre le nom de la propriété DataList:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <MyClass>
        <Data1 ... />
        <Data1 ... />
        <Data2 ... />
    </MyClass>
    Apparemment, on ne peut pas utiliser XMLArray and XMLText sur un même membre.

    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 672
    Points : 1 172
    Points
    1 172
    Par défaut
    Bonsoir,
    Avez vous essayé de mettre un attribut XmlElement à la Propriété public List<Data>, comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         [XmlElement("")]
         public List<Data> DataList; //{ get; set; }
    Ici TomLev nous dit :
    Cas particulier des collections : l'attribut XmlElement a un effet particulier lorsqu'il est appliqué à une propriété qui renvoie une collection : il spécifie que la collection sera sérialisée comme une séquence d'éléments de même niveau que les autres propriétés de l'objet (et non contenus dans un élément "englobant" du nom de la propriété).
    A voir...

  3. #3
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 570
    Points
    3 570
    Par défaut
    Effectivement, avec quelque chose comme ça, ça devrait aller :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            [XmlElement("Data1", typeof(Data1))]
            [XmlElement("Data2", typeof(Data2))]
            public List<Data> DataList { get; set; }

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 163
    Points : 77
    Points
    77
    Par défaut
    Effectivement, avec quelque chose comme ça, ça devrait aller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [XmlElement("Data1", typeof(Data1))]
    [XmlElement("Data2", typeof(Data2))]
    public List<Data> DataList { get; set; }
    C'est exactement ce que je voulais. Merci !

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

Discussions similaires

  1. Faire une liste d'élément qui ne sont pas dans la base
    Par bossLINDROS dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/06/2007, 12h09
  2. Réponses: 3
    Dernier message: 26/08/2006, 14h03
  3. Réponses: 12
    Dernier message: 10/08/2006, 17h22
  4. [VB]Ja'imerais afficher une liste d'éléments...
    Par STRUFIELD dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/01/2006, 18h49
  5. [struts] afficher page par page une liste d'élément
    Par BurningPat dans le forum Struts 1
    Réponses: 6
    Dernier message: 27/09/2005, 11h09

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