begin process at 2010 02 09 19:36:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Autre

 > 

XML Sérialisation + héritage + dictionary


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

XML Sérialisation + héritage + dictionary

mercredi 3 septembre 2008 à 13:41:58 | XML Sérialisation + héritage + dictionary

sidommou

Salut,

J'ai besoin d'un peu d'aide pour la sérialisation XML. J'ai une classe école qui contient un objet dictionary de personne. une personne peut être un étudiant, un professeur ou encore un membre administratif.

J'ai voulu faire une sérialisation xml mais j'ai eu des problèmes sur 2 points:
1) sérialisation du dicionary: j'ai trouvé une solution mais cette dernière ne fonctionne pas quand j'intègre le dictionary dans la classe.
2) la sérialisation xmlme génére une exception lors del'ajout d'un objetfils de personne.

voila la structure du fichier xmlqueje souhaiteaboutir à:

<ecole id="" nom="">
    <personnes>
         <etudiant id="" nom="" classe=""/>
         <professeur id="" nom="" nbrecours="">
               <classe id="" nom=""/>
               <classe id="" nom=""/>
         </professeur>
         <etudiant id="" nom="" classe=""/>
    </personnes>
</ecole>

Si quelq'un peut m'aider car j'en ai vraiment besoin etcurgent même
merci d'avance
mercredi 3 septembre 2008 à 14:48:48 | Re : XML Sérialisation + héritage + dictionary

billou_13

Membre Club
Bonjour,

Concernant ton exception lors de la génération du xml, il faut que tu déclares toutes tes classes de bases dans la classe collection.

Exemple:
[XmlInclude(typeof(Etudiant)), XmlInclude(typeof(Professeur))]
public class PersonneCollection : ICollection<Personne>
{
  //...
}

Perso, si quelqu'un sait, je n'ai jamais su pourquoi ? ^^


Billou
mercredi 3 septembre 2008 à 14:50:36 | Re : XML Sérialisation + héritage + dictionary

billou_13

Membre Club
Erratum ^^:
Pour la déclaration, ce n'est pas les classes de bases mais plutôt les classes héritant de ta classe de base "Personne".

De plus, pour les "XmlInclude", il faut que tu déclares le namespace:
using System.Xml.Serialization;

Bonne journée,


Billou_13
mercredi 3 septembre 2008 à 14:54:03 | Re : XML Sérialisation + héritage + dictionary

leprov

Pour la sérialization du dictionary, je te conseille de créer une classe dérivée de dictionary<typedecle, Personne> qui implémente IXmlSerializable, et d'utiliser cette classe plutot que le dictionnaire lui même
mercredi 3 septembre 2008 à 15:09:12 | Re : XML Sérialisation + héritage + dictionary

billou_13

Membre Club
Perso, je n'implèmente jamais l'interface IXmlSerializable et cela fonctionne très bien.
Je m'arreterai donc à:

[XmlInclude(typeof(Etudiant)), XmlInclude(typeof(Professeur))]
public class PersonneCollection : Dictionnary<string, Personne>
{
  //...
}


Billou_13
mercredi 3 septembre 2008 à 15:13:56 | Re : XML Sérialisation + héritage + dictionary

gglamicose

Salut Sidommou, j'ai un lien dans la poche qui m'as vraiment beaucoup aidé a l'époque ou j'ai du passer par la sérialisation !
[ Lien ]

J'espère qu'il t'aideras autant que moi !
Cordialement
mercredi 3 septembre 2008 à 15:56:13 | Re : XML Sérialisation + héritage + dictionary

billou_13

Membre Club
Pour revenir sur l'interface IXmlSerializable, je ne l'ai utilisé qu'une fois:
lorsque que j'ai voulu influencer la création du fichier XML de sortie.

Dans ce cas, l'implémentation de l'interface permet de prendre la main sur les méthode de sérialisation et déserialisation:
public void WriteXml(XmlWriter writer);
public void ReadXml(XmlReader reader);
public XmlSchema GetSchema()


Billou_13
mercredi 3 septembre 2008 à 17:23:26 | Re : XML Sérialisation + héritage + dictionary

Bidou

Administrateur CodeS-SourceS
Ceux qui sont abonnés au magazine Programmez! peuvent consulter mes 2 articles à ce sujet (n°109 et 110)...
mercredi 3 septembre 2008 à 18:06:58 | Re : XML Sérialisation + héritage + dictionary

billou_13

Membre Club
C'est considéré comme de la pub ça ^^
Résultat: je vais devoir acheter le magazine pour savoir si j'utilise la bonne méthode.

Bravo Bidou, tu a gagné un lecteur !
J'espère que ca vaut le coup que j'aille acheter le magazine. Sinon, demain, tu auras de mes nouvelles !!!

Bonne soirée,


Billou_13
mercredi 3 septembre 2008 à 18:41:42 | Re : XML Sérialisation + héritage + dictionary

Bidou

Administrateur CodeS-SourceS
C'est un article assez léger, plutôt pour débutant, qui est déjà sorti y'a 2 mois (et sur deux numéros car trop grand). Je peux t'envoyer les sources PDF par eMail si intéressé puisqu'il n'est plus dispo en vente (le nouveau est déjà sorti)....

1 2

Cette discussion est classée dans : xml, classe, sérialisation, dictionary, héritage


Répondre à ce message

Sujets en rapport avec ce message

Sérialisation et héritage [ par esopio ] Salut,J'ai besoin de sérialiser 2 classes filles d'une même classe mère. Seul problème cela ne veut pas fonctionner. La classe mère passe sans problèm Sérialisation [ par emmanuel9 ] Bonjour, J'ai un logiciel où pour sauvegarder les données, j'ai une instance de la classe Donnees (qui contient des ArrayList) que je sérialise dans generic avec de l'héritage [ par clemaate ] Bonjour,J'ai une classe B qui hérite de A. Je voudrais avoir un moyen pour dire que pour une classe generic, generic hérite de generic.J'ai essayé en Sérialisation Xml : Sérialiser une HybridDictionary ou Hashtable ??? [ par EmacLi ] Boujour à tous,Quelqu'un pourrait il m'aider ?Je cherche à sérialiser une hashtable ou une hybriddictionnary !Je cherche, je cherche, sans succés ! Me Héritage poly fichier [ par gretata ] bonjour a tous !!voila j'ai un problême pour sauvegarder des données d'un héritage et polymorphisme ( pour la methode sauvegarder() ).j'ai une classe Sérilization avec les 2 mêmes noms de classe [ par EmacLi ] Bonjour à tous,Je vous expose mon problème :J'ai deux classes avec le même nom "Document" dans deux namespaces différents. Une des classes est abstrai Sérialisation Xml Crypté [ par EmacLi ] Bonjour,J'ai une classe sérialisable qui contient une propriété "Password". Je voudrai savoir si il existe, par le biais d'"[Attribute]" et en utilisa Evénement à l'accession d'une classe [avec héritage] [ par billou_13 ] Bonjour,Je suis confronté à un petit problème et j'aimerais bien savoir s'il existe une solution. Pour vous expliquer mon problème, voici un exemple:p Probleme pour acceder a une textbox [ par dowi ] Bonjour a tous,Premierement, desole si cette question a deja ete posee, mais je n'ai pas trouve de reponse qui me convienne ou que je comprenne.Dans l prob sérialisation [ par abir01 ] Bonjour tout les monde: je voulais savoir si il y un conteneur en C# comme les map en C++, mais aussi il peut être sérialiser..???? Sachons que j'a


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,778 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales