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 :

POO, serialisation, XML


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 65
    Par défaut POO, serialisation, XML
    Bonjour,
    Je débute au niveau de la sérialisation, dans mon projet je dispose de 3 classes dont une avec de l’héritage.
    Dans ma 3e classe je souhaite créer une arrayList qui me permettra d'enregistrer mes différents objets. Je souhaite donc sérialiser mes différents objets dans un même fichier XML.

    La structure de la 1er Classe simple sans heritage.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    [Serializable]
        [System.Xml.Serialization.XmlRoot()]
     
       public class ClassZoo
        {
            public int CA;
            public string nom;
            public int salarie;
            public int capaciteMax;
            public int nbVisiteurs;
     
            public int prixEntre;
            public int prixMin;
            public int prixMoyen;
            public int prixMax;
     
            public int niveau;
     
     
            //Random randNombreVisiteurs = new Random();
     
            public ClassZoo()
            {
                this.CA = 1000;
                this.salarie = 100;
                this.prixEntre = 12;
                this.prixMoyen = 12;
                this.capaciteMax = 100;
                this.niveau = 1;
            }
    La 2e classe elle dispose d'héritage
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    [Serializable]
        [System.Xml.Serialization.XmlRoot()]
        public class ClassAnimaux
        {
            public int nombre;
            public int qteNourriture;
            public string typeNourriture;
     
            public ClassAnimaux()
            {
                this.nombre = 0;
                this.qteNourriture = 0;
                this.typeNourriture = "";
            }
        }
     
        [XmlInclude(typeof(ClassAnimaux))]
        public class Tigres : ClassAnimaux 
        {
            public Tigres(int nombre): base()
            {
                this.nombre = nombre;
                this.qteNourriture = nombre * 2;
                this.typeNourriture = "Viande";
            }
        }
     
        [XmlInclude(typeof(ClassAnimaux))]
        public class Singes : ClassAnimaux
        {
            public Singes (int nombre): base()
            {
                this.nombre = nombre;
                this.qteNourriture = nombre * 5;
                this.typeNourriture = "Graines";
            }
        }
     
        [XmlInclude(typeof(ClassAnimaux))]
        public class Lions : ClassAnimaux
        {
            public Lions (int nombre): base()
            {
                this.nombre = nombre;
                this.qteNourriture = nombre * 2;
                this.typeNourriture = "Viande";
            }
        }
    }
    Ma 3e classe avec la fonction pour serializer
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    [Serializable]
        [System.Xml.Serialization.XmlRoot()]
        public class ClassSerialize
        {
            public  ArrayList Liste = new ArrayList();
            //public List<Liste> contactBook = new List<Person>();
     
     
            public ClassSerialize() // constructeur par defaut
            {
     
            }
     
            public void Serialize (object Tigres,object Singes, object Zoo, object Lions )
            {
                Liste.Add(Tigres);
                Liste.Add(Singes);
                Liste.Add(Zoo);
                Liste.Add(Lions);        
                XmlSerializer xs = new XmlSerializer(typeof(ClassSerialize));
                using (StreamWriter wr = new StreamWriter("toto.xml"))
                {
                    xs.Serialize(wr, Liste);
                }
     
            }
    Lorsque l'on rentre dans ma fonction Sérialise, j'ai une erreur sur la ligne xs.Serialize(wr, Liste);
    Erreur lors de la génération du document XML.

  2. #2
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Par défaut
    Hello,

    J'ai un doute sur le type, ce ne serait pas plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlSerializer xs = new XmlSerializer(typeof(ArrayList));

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 65
    Par défaut
    Sur la documentation msdn il mette:

    XmlSerializer s = new XmlSerializer(typeof(MyClass);

Discussions similaires

  1. Serialisation XML en JavaME
    Par guenievre dans le forum Java ME
    Réponses: 10
    Dernier message: 19/06/2007, 08h32
  2. serialisation XML d'ArrayList
    Par tatayet_le_felee dans le forum C#
    Réponses: 1
    Dernier message: 15/06/2007, 10h50
  3. Serialisation XML avec Xstream !
    Par fabred dans le forum Persistance des données
    Réponses: 4
    Dernier message: 06/06/2007, 08h56
  4. [DOM] [Package] serialisation XML
    Par Overflow64 dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/10/2004, 16h43
  5. [Concept][Sérialisation] XML ou serializable
    Par christopheJ dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 03/06/2004, 13h11

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