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 :

Sérialiser une liste de String sans avoir de noeud <string>


Sujet :

C#

  1. #1
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 721
    Points : 5 366
    Points
    5 366
    Par défaut Sérialiser une liste de String sans avoir de noeud <string>
    Bonjour et bonne année.

    Il y a certainement une solution toute bête à laquelle je n'ai pas pensé puisque mon problème est très bête.

    Je voudrais faire un fichier de paramétrage en XML et notamment une liste de filtre qui ne sont en réalité que de simples chaines. Ce bout de code (pour l'instant très moche mais qui a le mérite d'être simple) est sensé créer un fichier de configuration avec des valeurs de tests.

    Code C# : 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
    public class Params{
      List<String> _filters = new List<String>();
      public List<String> Filters
      { 
        get { return _filters ; }
        set { _filters = value; } 
      }
     
      ...
     
      public Params()
      {
        _filters.Add("Filtre 1");
        _filters.Add("Filtre 2");
        _filters.Add("Filtre 3");
     
        ...
      }
      ...
    }
     
    public class ParamsExporter
    {
      public ParamsExporter()
      {
        Params Parameters = new Params();
        XmlSerializer writer = new XmlSerializer(typeof(Params));
        Stream file = new FileStream("DefaultParameters.xml", FileMode.Create, FileAccess.Write);
        writer.Serialize(file, Parameters);
        file.Close();
      }
    }

    Cela me génère le fichier avec ce contenu (seulement la partie qui pose problème en réalité)
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0"?>
    <Params xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Filters>
        <string>Filtre 1</string>
        <string>Filtre 2</string>
        <string>Filtre 2</string>
      </Filters>
    </Params>

    Je voudrais obtenir ceci :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0"?>
    <Params xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Filters>
        <Filter>Filtre 1</Filter>
        <Filter>Filtre 2</Filter>
        <Filter>Filtre 2</Filter>
      </Filters>
    </Params>

    J'avais pensé à simplement créer un objet Filter héritant de la class String mais je ne me souvenais plus que cette dernière était déclarée "Sealed".

    Au moment où j'écris ce post j'essaie de décorer cette fameuse liste avec des [XMLElement] et autres joyeusetés mais je n'arrive pas à obtenir le résultat souhaité.

    Please Help !

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [XmlArrayItem(ElementName= "Filter")]
    public List<String> Filters
    { 
      get { return _filters ; }
      set { _filters = value; } 
    }

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 721
    Points : 5 366
    Points
    5 366
    Par défaut
    C'est tout à fait ça. Merci !

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/08/2009, 10h34
  2. [HTML 4.0] Centrer une liste non ordonnée sans CSS
    Par jeremdu94 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/12/2008, 23h04
  3. Réponses: 3
    Dernier message: 27/08/2008, 10h17
  4. Réponses: 0
    Dernier message: 30/05/2008, 22h20
  5. Affiche d'une liste d'élements sans connaitre le nombre
    Par zmatz dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 06/06/2007, 14h11

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