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 :

[XML] - Problème de desérialisation


Sujet :

C#

  1. #1
    Membre régulier Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 87
    Points
    87
    Par défaut [XML] - Problème de desérialisation
    Bonjour à tous,

    J'ai un petit souci de desérialisation d'un objet.
    J'ai une classe "Stock" qui contient une liste type d'objet Produit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    [Serializable]
    public class Stock
    {
       ...
       public List<Product> produits
       {
          get {...}
          set {...}
       }
    }
    J'arrive à sérialiser mon objet dans un fichier XML sans aucun problème. Seulement lorsque je desérialise le même fichier par la suite comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Stock st = new Stock();
    StreamReader reader = File.OpenText(cheminFichier);
    XmlSerializer x = new XmlSerializer(typeof(Stock));
     
    st = (Stock)x.Deserialize(reader);
    reader.Close();
    mon objet st contient bien ma liste de produit mais celle-ci est vide.

    Merci d'avance de votre aide.
    Antony, développeur .Net
    http://www.flecheinthepeche.fr/blog/

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 112
    Points
    112
    Par défaut
    Tes objets product doivent être également serialisable

  3. #3
    Membre régulier Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 87
    Points
    87
    Par défaut
    C'est le cas, j'ai dû ajouter le tag [serializable] à ma classe Product sinon la sérialisation ne fonctionnait pas. Or là, mon fichier XML est généré et tout à fait correct...
    Antony, développeur .Net
    http://www.flecheinthepeche.fr/blog/

  4. #4
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 112
    Points
    112
    Par défaut
    ouvre avec un XmlReader plutot

  5. #5
    Membre régulier Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 87
    Points
    87
    Par défaut
    J'ai essayé ton conseil et j'ai toujours le même souci. Peut être une erreur de ma part, voici le code avec le xmlReader :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Stock st = new Stock();
    XmlReader reader = XmlReader.Create(cheminFichier);
    XmlSerializer x = new XmlSerializer(typeof(Stock));
     
    st = (Stock)x.Deserialize(reader);
    reader.Close();
    Ma liste de produit est toujours vide ... Je comprends vraiment pas d'ou vient le problème...
    Antony, développeur .Net
    http://www.flecheinthepeche.fr/blog/

  6. #6
    Membre régulier Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 87
    Points
    87
    Par défaut
    c'est bon j'ai trouvé .
    Il "suffit" d'ajouter le tag suivant à la liste ou tableau que l'on souhaite sérialiser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [XmlArrayItem(typeof(TypeDuChamp))]
    ce qui donne dans mon exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       [XmlArrayItem(typeof(Product))]
       public List<Product> produits
       {
          get {...}
          set {...}
       }
    Antony, développeur .Net
    http://www.flecheinthepeche.fr/blog/

  7. #7
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 112
    Points
    112
    Par défaut
    Je ne connaissait pas cet attribut > bravo

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

Discussions similaires

  1. [CR10][ODBC][XML] problème de lenteur
    Par capitainerotel dans le forum Connectivité
    Réponses: 4
    Dernier message: 09/05/2005, 18h58
  2. Valider fichier XML : problème avec la DTD
    Par SkIllz2k dans le forum Valider
    Réponses: 2
    Dernier message: 26/04/2005, 17h15
  3. [Plugin / XML] Problème plugin Eclipse avec JDOM
    Par kiko_18 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 12/02/2005, 13h55
  4. Réponses: 2
    Dernier message: 01/06/2004, 12h47
  5. [Accents - XML] Problème de codage non supporté !!
    Par Smortex dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/11/2002, 11h00

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