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

Windows Phone .NET Discussion :

Probleme de serialization xml en C#


Sujet :

Windows Phone .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Par défaut Probleme de serialization xml en C#
    Bonjour à tous !
    J'ai un petit soucis avec une séquence de sérialization dans mon application.
    Pour commence ril s'agit d'une appli pour Windows Phone 7 (donc silverlight blablabla)
    Le passage qui me pose soucis :
    Je souhaite charger le contenu d'un xml contenant des données, mon xml est bien formé au départ (sisi j'ai vérifier), je deserialize mes données, il s'agit d'objets "datas" que je met dans une List<datas> tout simplement.
    Avec ma liste je test si elle contient bien le nom que je cherche (la réponse est forcément oui puisque j'ai utilisé ce meme xml avant pour en arriver à vouloir supprimer l'objet. Quand je le trouve je le vire de ma list puis je serialize ma nouvelle liste toute propre sans l'objet que j'ai supprimé. Et la paf, mon xml est mal formé car il contient bien ma liste sans l'objet mais apres le root node qui ferme le xml "</ArrayOfDatas>" il y a le dernier objet de ma liste qui à été rajouté... Incompréhensible !
    Ci dessous la séquence de deserialization/serialization :

    Code C# :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    private void deleteButton_Click(object sender, System.EventArgs e)
            {
                using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    using (IsolatedStorageFileStream streamReader = myIsolatedStorage.OpenFile("newData.xml", FileMode.Open))
                    {
                        XmlSerializer serializer = new XmlSerializer(typeof(List<datas>));
     
                        List<datas> data = (List<datas>)serializer.Deserialize(streamReader);
     
                        streamReader.Close();
     
                        // Write to the Isolated Storage
                        XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
                        xmlWriterSettings.Indent = true;
     
                        using (IsolatedStorageFileStream streamWriter = myIsolatedStorage.OpenFile("newData.xml", FileMode.Open))
                        {
                            using (XmlWriter xmlWriter = XmlWriter.Create(streamWriter, xmlWriterSettings))
                            {
                                for (int i = 0; i < data.Count; i++)
                                {
                                    if ((data[i].name == birthdayNameBlock.Text) && (data[i].birthday == Convert.ToDateTime(birthdayDate.Text)))
                                        data.Remove(data[i]);
                                }
                                serializer.Serialize(xmlWriter, data);
                            }
                            streamWriter.Close();
                        }
     
                        Uri page = new Uri("/MainPage.xaml", UriKind.Relative);
                        NavigationService.Navigate(page);
                    }
                }
            }


    Ensuite un exemple de xml que je devrais obtenir apres la suppression de mon objet :

    Code XML :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?xml version="1.0" encoding="utf-8"?> 
    <ArrayOfDatas xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <datas>
        <name>yyyyy</name>
        <birthday>2011-11-01T00:00:00+01:00</birthday>
      </datas>
      <datas>
        <name>laque</name>
        <birthday>2011-11-01T00:00:00+01:00</birthday>
      </datas>
      <datas>
        <name>essai 2 05</name>
        <birthday>2011-11-01T00:00:00+01:00</birthday>
      </datas>
      <datas>
        <name>ggggggggg</name>
        <birthday>2011-11-01T00:00:00+01:00</birthday>
      </datas>
    </ArrayOfDatas>


    Et le résultat que j'obtiens en réalité :
    Code XML :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?xml version="1.0" encoding="utf-8"?> 
    <ArrayOfDatas xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <datas>
        <name>yyyyy</name>
        <birthday>2011-11-01T00:00:00+01:00</birthday>
      </datas>
      <datas>
        <name>laque</name>
        <birthday>2011-11-01T00:00:00+01:00</birthday>
      </datas>
      <datas>
        <name>essai 2 05</name>
        <birthday>2011-11-01T00:00:00+01:00</birthday>
      </datas>
      <datas>
        <name>ggggggggg</name>
        <birthday>2011-11-01T00:00:00+01:00</birthday>
      </datas>
    </ArrayOfDatas>   <name>ggggggggg</name>
        <birthday>2011-11-01T00:00:00+01:00</birthday>
      </datas>
    </ArrayOfDatas>

    A l'aide je ne comprend pas !
    ps : apres divers test : c’est toujours le DERNIER objet de ma liste qui est écrit apres le root node fermant

    ps 2 : le code compile, l'application tourne donc si le xml initiale est bien formé, je peu ajouter autant que je veux de nom/date ça marche, si je souhaite supprimer pas de message d'erreur je suis redirigé a la page d'accueil sauf que la j'ai une erreur qui me dit que le xml est mal formé... normal ce que ce couillon de serializer écrit en fin de fichier...

    Merci d'avance

    Skay

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    c'est normal. Vu que ton fichier est ouvert en Open quand tu sérialise, il ne l'efface pas avant. Donc il ecrit dedans ta nouvelle liste. Mais, vu qu'elle est plus petite, il reste une partie des donnes prcdentes. C'est ce que tu vois la fin.
    Essaye en ouvrant en Filemode.Create, par exemple.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Par défaut
    Merci de ta réponse c'était exactement ça !!!

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

Discussions similaires

  1. Probleme avec le XML serializer.
    Par FadeOut dans le forum C#
    Réponses: 4
    Dernier message: 26/01/2009, 14h19
  2. [Tomcat]probleme avec web.xml
    Par The_freeman dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 25/01/2006, 23h32
  3. [DOM] Probleme de parsing Xml en java
    Par bolivari dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 25/01/2006, 20h42
  4. Probleme d'encode XML et java
    Par ujoodha dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 25/10/2005, 10h24
  5. Probleme d'include XML/XSL en ASP
    Par baygz dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 02/07/2004, 17h38

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