C# - Deserialize
Résolu
Towers
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
Towers Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
Towers Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à lire un fichier XML à l'aide de c#.
Je suis encore dans les tests et j'ai un bug que je n'arrive pas à résoudre.
J'ai réussi à enregistrer ma classe listeDeContacts dans le fichier "ListeDeContactsEcrire.xml" en la serializant mais je n'arrive pas à deserializer le fichier pour instancier ListeDeContacts.
Voici mon code :
et mon fichier XML généré que je n'arrive pas à relire :
L'erreur que j'obtiens est erreur dans le document XML / {"<ListeDeContacts xmlns=''> n'était pas attendu."}
Voilà si quelqu'un s'y connait, merci de me donner un petit coup de pouce.
Towers
Je cherche à lire un fichier XML à l'aide de c#.
Je suis encore dans les tests et j'ai un bug que je n'arrive pas à résoudre.
J'ai réussi à enregistrer ma classe listeDeContacts dans le fichier "ListeDeContactsEcrire.xml" en la serializant mais je n'arrive pas à deserializer le fichier pour instancier ListeDeContacts.
Voici mon code :
using System; using System.IO; using System.Xml.Serialization; using System.Collections; namespace TestXML { class Program { private static string nomRep = "C:\\Documents and Settings\\xpi\\Bureau\\"; static void Main() { ecrireListeDeContacts(); lireListeDeContacts(); } static void lireListeDeContacts() { string nomFichier = nomRep + "ListeDeContactsEcrire.xml"; XmlSerializer serializer = new XmlSerializer(typeof(Pays)); TextReader flux = new StreamReader(nomFichier); ListeDeContacts liste = (ListeDeContacts)serializer.Deserialize(flux); flux.Close(); foreach (Contact temp in liste.contacts) { Console.Out.WriteLine("Nom : " + temp.nom); Console.Out.WriteLine("Prenom : " + temp.prenom); Console.Out.WriteLine("Ville : " + temp.ville + "\n"); } } static void ecrireListeDeContacts() { string nomFichier = nomRep + "ListeDeContactsEcrire.xml"; Contact contact1 = new Contact(); contact1.nom = "Dupont"; contact1.prenom = "Thé"; contact1.ville = "Moulin Sar"; Contact contact2 = new Contact(); contact2.nom = "Dupond"; contact2.prenom = "Dé"; contact2.ville = "Moud L'ainsart"; ListeDeContacts liste = new ListeDeContacts(); liste.ajoutContact(contact1); liste.ajoutContact(contact2); XmlSerializer serializer = new XmlSerializer(typeof(ListeDeContacts)); TextWriter flux = new StreamWriter(nomFichier); serializer.Serialize(flux, liste); flux.Close(); } } et mes classes sont du type : using System; using System.Xml.Serialization; namespace TestXML { [Serializable] public class Contact { public string nom; public string prenom; public string ville; } }
et mon fichier XML généré que je n'arrive pas à relire :
<?xml version="1.0" encoding="utf-8"?> <ListeDeContacts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <contacts> <Contact> <nom>Dupont</nom> <prenom>Thé</prenom> <ville>Moulin Sar</ville> </Contact> <Contact> <nom>Dupond</nom> <prenom>Dé</prenom> <ville>Moud L'ainsart</ville> </Contact> </contacts> </ListeDeContacts>
L'erreur que j'obtiens est erreur dans le document XML / {"<ListeDeContacts xmlns=''> n'était pas attendu."}
Voilà si quelqu'un s'y connait, merci de me donner un petit coup de pouce.
Towers
2 réponses
En fait je me sens bête mais c'était juste un problème de recopie de code, d'une fonction à l'autre...*
en fait il fallait écrire :
static void lireListeDeContacts() { string nomFichier; XmlSerializer serializer = new XmlSerializer(typeof(Pays)); ... ... }
en fait il fallait écrire :
static void lireListeDeContacts() { string nomFichier; XmlSerializer serializer = new XmlSerializer(typeof(ListeDeContacts)); ... ... }