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

Framework .NET Discussion :

Serialisation Xml d'objets : et les types particuliers ?


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut Serialisation Xml d'objets : et les types particuliers ?
    Bonjour à tous,

    Je cherche à utiliser l'interface IXmlSerializable d'une certaine façon mais je ne trouve aucune info
    Grosso modo, je serialise bien un objet en xml, ça fonctionne bien.
    Malheureusement, quand je tombe sur un type de données un peu moins standard que les string et autres integer (genre le type Color.... ) bah là je suis en galère...
    Je souhaiterai donc savoir s'il existe une méthode pour gérer les cas un peu genants pour la serialisation xml svp.
    Je précise que j'aimerai ne pas partir dans l'écriture d'une méthode ou je dois gérer toutes mes propriétés mais uniquement celles qui genent.
    Par exemple :
    une classe cls1 ayant deux propriétés : un string et une color
    J'aimerai pouvoir lui dire un truc du genre :
    Si tu sais serialiser alors debrouille toi
    Sinon
    Si le type est color :
    Tu prend la valeur Arvb et tu la stockes
    Sinon tu fais rien

    Edit : pour le petit scenar que je viens de citer, j'avais dans l'idée d'implementer iXmlSerializable mais je ne sais pas trop comment faire pour conserver la gestion des List(Of T) faite par défaut (qui m'arrange d'ailleurs grandement!)

    Serait-ce possible ?

    Merci par avance
    @++

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 49
    Par défaut
    Serialize toi meme ta couleur en faisant une classe qui recupert la proportion de rouge de vert et de bleu d'une couleur ,et qui peut a partir du rouge vert et bleu te retourne ta couleur

    Pour ce qui est la serialisation de liste voila comment j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [XmlArrayItem("ObjetTache",Type = typeof(ObjetTache))]
    public ArrayList LstTache;
    ObjetTache est ma classe qui contient mes objet a serialiser.

    En voici un bout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    [Serializable()]
      public class ObjetTache
      {
     
        public string Sujet="";
        public string Body="";
        public DateTime Debut=DateTime.MinValue;
        public DateTime Fin=DateTime.MinValue;
        public string id="-1"; 
        public string categorie="Aucune";
     
    ...
    }
    Voila j'espere que ca répondu a la deuxieme partie de ta question

    bonne chance pour la suite

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Salut GoN49 (d'ailleurs, au vu du 49 dans ton pseudo, serais tu du Maine et Loire ? si c'est le cas, j'y suis aussi ^^)

    Merci pour ta réponse. Alors vis à vis de ce que tu m'expliques :

    Pour la couleur : je suis d'accord, j'etais tombé sur cet exemple et d'autres du meme genre mais, pour des types composés par exemple, ça ne fonctionne pas... Si tu prends par exemple une font qui est structurée avec plusieurs éléments (taille, police...) tu tombes sur un os.
    Pour les listes : Ta méthode implique que je change tous mes types de listes qui sont déjà settées sur des List(Of <T>) donc bien embettant et j'ai pas spécialement envie de tout remettre en question

    Par contre, j'ai un peu avancé (en reculant certes mais j'avance...)
    Voilà comment je procède :
    Dans mes classes, j'implemente IXmlSerializable.
    Je me suis fait un module avec plusieurs méthodes dont ces deux là :

    SerialiseStdTypes(obj as object, writer as xml.xmlWriter)
    SerialiseObjet(obj as object, writer as xml.xmlWriter)

    La premiere va serialiser toutes les propriétés qui n'ont pas été marquées comme etant non serialisable et place tout ca dans le xml
    La deuxieme va serialiser un objet passé en parametre dans le xml.

    Dans mes classes, je fais appel à ces deux procédures pour serialiser mes éléments à la main (une partie se fait en automatique avec serialiseStdTypes et l'autre est faite à la main avec serialiseObjet)

    La déserialisation s'appuie sur le meme principe.
    Là ou je bloque, c'est pour la deserialisation d'un objet.
    Quand j'utilise l'objet XmlSerializer et que je fais
    XmlSerializer.deserialize(reader, obj)
    mon problème est qu'il prend tout le xml et non le noeud concernant mon objet... je ne sais pas trop vers quoi me tourner afin de fait une deserialisation selective de cet objet... Si tu as une idée...

    Encore merci en tout cas !
    @+ et vive l'Anjou

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 49
    Par défaut
    Oui effectivement je vient du maine et loire

    Pour le reste , pourrait tu donner un exemple de ton fichier xml générer (avec tout les type que tu met) , car la je vois pas trop ce qui est enregistrer.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Salut Gon49,

    Je ne poste pas d'exemple de xml car j'ai joué autrement...
    En gros, je me suis fais un module gérant tous mes types et sérialise/déserialise tous mes éléments sans probleme.
    Là je bloque juste sur un point mais ce sera le sujet d'un nouveau topic ^^
    Merci en tout cas !
    @+

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

Discussions similaires

  1. Serialisation XML d'objet Javascript
    Par niarkyzator dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/07/2013, 13h01
  2. Tous les objets d'un type en particulier
    Par Papy214 dans le forum C#
    Réponses: 0
    Dernier message: 20/05/2011, 10h06
  3. ClassCastException avec un EJB renvoyant un objet de type particulier
    Par vsevel dans le forum Glassfish et Payara
    Réponses: 1
    Dernier message: 20/06/2007, 13h01
  4. Réponses: 2
    Dernier message: 08/07/2006, 18h44
  5. comment gerer les types Objet(java)
    Par karray_ali dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 09/05/2006, 23h27

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