sidommou
Messages postés27Date d'inscriptionvendredi 31 décembre 2004StatutMembreDernière intervention29 novembre 2010
-
3 sept. 2008 à 13:41
sidommou
Messages postés27Date d'inscriptionvendredi 31 décembre 2004StatutMembreDernière intervention29 novembre 2010
-
8 sept. 2008 à 08:56
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="">
<etudiant id="" nom="" classe=""/>
<classe id="" nom=""/>
<classe id="" nom=""/>
<etudiant id="" nom="" classe=""/>
</ecole>
Si quelq'un peut m'aider car j'en ai vraiment besoin etcurgent même
merci d'avance
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 3 sept. 2008 à 14:54
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
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 3 sept. 2008 à 15:56
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()
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 3 sept. 2008 à 18:41
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)....
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 3 sept. 2008 à 18:58
Ah bein bravo ! LOL
Je viens d'acheter le numéro de ce mois-ci et comme il était sous plastique, j'ai pas pu vérifier ^^
Tu me diras, ca ne me fera pas de mal de lire un peu.
Cela étant, ton article m'intéresse fortement. Si tu peux me l'envoyer en pdf, ca serait super sympa.
sidommou
Messages postés27Date d'inscriptionvendredi 31 décembre 2004StatutMembreDernière intervention29 novembre 2010 3 sept. 2008 à 20:41
Merci à tous,
pour le truc de dictinary, c vrai qu'il n'est pas sérialisable et j'ai trové comment implémenter un classe dérivant de xml serilzable. le pb vient dans l'ingration de cette classe dans une autre car c'est pas le même type de sérialisation. je sais pas si je me fait bien comprendre.
pour l'héritage, je viens de trouver des remarque tel que les classes filles doient avoir un constructeur dans parametre afin que la sérialisation marche. je vais essayer ça sur mon cose et je vous tien au courant.
sidommou
Messages postés27Date d'inscriptionvendredi 31 décembre 2004StatutMembreDernière intervention29 novembre 2010 8 sept. 2008 à 08:35
Bonjour à tous,
J'ai trouvé une solution pour le problème de l'héritage.En fait, les balises à ajouter sont:
1) pour chaque classe, On doit ajouter le serializable et le xml type. Par exemple, pour la calsse personne, nous ajoutons:
[Serializable()]
[XmlType(TypeName =
"Personne")]
2) Lors de l'utisation de l'hériatge, nous ajoutons les références à l'utilisation de l'héritage. Par exemple, dans la classe école, nous avons dit que c un ensemble de personnes, alors au dessus de la declaration de la liste, nous devons ajouter:
dans la liste, nous déclarons ainsi que la liste peut contenir des éléments de type personne,etudiant, professeur ou encore empAdministratif.
Un des inconvénients c que l'onpeut pas déclarer List où Ipersonne c l'interface qu'implémente personne.D'autre part, si jedéclare par exemple un ensemble de classes sous école et que jeredéclare sous professeur, ça va générer deux objet différents lors de la désérialisation.
> Maintenant que le problème de l'héritage est partiellemnt dénoué . Il me resteà trouver une solution à l'utilisation de Dictionary. Je voudrais avoir une solution de telle sorte que le code de sérialisation etde désérialisation soit le même pour tous les objets de mon application. Alors si qlq1 peut m'aider, jene dirais pas non.
sidommou
Messages postés27Date d'inscriptionvendredi 31 décembre 2004StatutMembreDernière intervention29 novembre 2010 8 sept. 2008 à 08:56
Autre chose, j'ai pas pu sérialiser un attribut de type object.Y aurait pas une solution pour contourner ce problème carj'en ai besoin pour l'initialisation de mes objets.