Probleme de serialization xml
skay973
Messages postés
2
Statut
Membre
-
skay973 Messages postés 2 Statut Membre -
skay973 Messages postés 2 Statut Membre -
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# :
Ensuite un exemple de xml que je devrais obtenir apres la suppression de mon objet :
Code XML :
Et le résultat que j'obtiens en réalité :
Code XML :
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
Merci d'avance
Skay
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# :
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 :
<?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 :
<?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
Merci d'avance
Skay
A voir également:
- Probleme de serialization xml
- Xml viewer - Télécharger - Édition & Programmation
- Office xml handler - Télécharger - Traitement de texte
- Driveimage xml - Télécharger - Sauvegarde
- Txt en xml - Forum Programmation
- Impossible d'ouvrir le fichier office open xml - Forum Bureautique