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 - List d'entité


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 73
    Par défaut XmlSerializer - List d'entité
    Bonjour,

    Soit le XML simplifié suivant

    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
      <WhereFilter>
     
        <FilterGroup ID="Racine">
        </FilterGroup>
     
        <Filter ID="MF1FILTRE1">
        </Filter>
     
        <FilterGroup ID="MF1GROUPE1">
        </FilterGroup>
     
        <Filter ID="MF1FILTRE2">
        </Filter>
     
        <Filter ID="MF1FILTRE3">
        </Filter>
     
      </WhereFilter>
    et la class c# pour le désérialiser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        [XmlRoot(ElementName = "WhereFilter", Namespace = "")]
        public class WhereFilter
        {
            [XmlElement(ElementName = "FilterGroup", Namespace = "")]
            public List<FilterGroup> FilterGroup;  
     
            [XmlElement(ElementName = "Filter", Namespace = "")]
            public List<Filter> Filter;
        }
    il y a 2 listes d'objet. Dans le principe ça foncionnne sauf que lors de l'écriture il me met en 1er les FilterGroup puis les Filter.
    Comme ça
    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
      <WhereFilter>
     
        <FilterGroup ID="Racine">
        </FilterGroup>
     
        <FilterGroup ID="MF1GROUPE1">
        </FilterGroup>
     
        <Filter ID="MF1FILTRE1">
        </Filter>
     
        <Filter ID="MF1FILTRE2">
        </Filter>
     
        <Filter ID="MF1FILTRE3">
        </Filter>
     
      </WhereFilter>
    Ce qui est normal.

    Je voudrais conserver l'ordre initial.

    Avez une idée de comment je pourrait déclarer ma class pour faire ça.

    Merci

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 987
    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 987
    Par défaut
    https://stackoverflow.com/questions/...specific-order

    Edit :
    Mais, je pense que ça va bloquer car tu as plusieurs filtres pour un groupe.
    Une autre solution consiste à avoir une unique collection et à la remplir dans le bon ordre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [XmlRoot(ElementName = "WhereFilter")]
    public class WhereFilter
    {
        [XmlElement("FilterGroup", typeof(FilterGroup))]
        [XmlElement("Filter", typeof(Filter))]
        public List<object> Items { get; set; }
    }
    Sinon, changer la structure pour quelque chose de plus naturel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <WhereFilter>
        <FilterGroup ID="Racine">
            <Filter ID="MF1FILTRE1">
            </Filter>
        </FilterGroup>  
        <FilterGroup ID="MF1GROUPE1">
            <Filter ID="MF1FILTRE2">
             </Filter>
             <Filter ID="MF1FILTRE3">
             </Filter>
          </FilterGroup>
      </WhereFilter>

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 73
    Par défaut
    Merci mais au final j'ai trouvé plus simple.
    Pour info je suis en .Net 4.8.

    au niveau du root j'ai fait une liste d'objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [XmlElement(ElementName = "WhereFilter", Namespace = "")]
    public List<object> WhereFilter;
    ensuite pour la class WhereFilter j'ai fait mes 2 listes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [XmlRoot(ElementName = "WhereFilter", Namespace = "")]
        public class WhereFilter
        {
            [XmlElement(ElementName = "FilterGroup", Namespace = "")]
            public List<FilterGroup> FilterGroup;
     
            [XmlElement(ElementName = "Filter", Namespace = "")]
            public List<Filter> Filter;
        }

    Ensuite System.Xml.Serialization se débrouille tout seul.
    Ca donne ça
    Nom : XMLTest.png
Affichages : 29
Taille : 10,1 Ko

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

Discussions similaires

  1. XmlSerializer en framework 1.1
    Par Spidermeu dans le forum C#
    Réponses: 24
    Dernier message: 29/09/2008, 09h15
  2. OutputFormat et XMLSerializer dépréciés
    Par XSeb74 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 28/05/2008, 14h29
  3. XMLSerializer : Erreur lors de la sérialisation
    Par 0xYg3n3 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 01/11/2007, 11h47
  4. [C#] XmlSerializer : erreur d'execution
    Par xtream dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/09/2006, 01h07
  5. [NoClassDefFoundError] XMLSerializer
    Par sderecourt dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 27/04/2006, 11h43

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