MSDN España

Noticias, avisos, reflexiones... del equipo que hay detrás de MSDN en España... también tendremos alguna que otra firma invitada :)

Windows 8 Tips & Tricks. Serializar y deserializar objetos a disco (XAML/C#)

Windows 8 Tips & Tricks. Serializar y deserializar objetos a disco (XAML/C#)

[Nota: Este artículo pertenece a nuestra serie de Windows 8 Tips & Tricks]

 

En este Tips & Tricks vamos a aprender como podemos serializar y deserializar a XML los datos de forma rápida y sencilla. Esta característica es muy útil para poder guardar datos de la aplicación o cachear datos bajados de internet.

Para este ejemplo, vamos a crear una lista de "string", pero es posible hacerlo con otros tipos de datos.

List<string> lista = new List<string>();
lista.Add("Esto");
lista.Add("es");
lista.Add("un");
lista.Add("Tips&Tricks");

Ahora, si quisiéramos serializar nuestra "lista" sería de la siguiente forma:

//Creamos el Archivo donde vamos a serializarlo
await ApplicationData.Current.LocalFolder.CreateFileAsync("Datos.xml",
    CreationCollisionOption.ReplaceExisting);
//Abrimos un stream del archivo para escribir los datos
using (Stream stream = 
    await ApplicationData.Current.LocalFolder.OpenStreamForWriteAsync("Datos.xml",
    CreationCollisionOption.ReplaceExisting))
{
    //Serializamos los datos
    XmlSerializer serializer = new XmlSerializer(lista.GetType());
    serializer.Serialize(stream, lista);
    await stream.FlushAsync();
}

De esta forma, tendríamos en un archivo llamado "Datos.xml" en la carpeta de instalación de nuestra aplicación ,todos los datos serializados en XML.

Para deserializar los datos de el XML y volverlos a meter en nuestra "lista" necesitaríamos hacer lo siguiente:

//Abrimos el fichero donde están los datos serializados
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync("Datos.xml");
//Abrimos el stream del fichero
using (Stream stream = await file.OpenStreamForReadAsync())
{
    //Comprobamos que se ha creado bien el stream
    if (stream != null)
    {
        //Inicializamos el serializador y desserializamos
        XmlSerializer serializer = new XmlSerializer(lista.GetType());
        //Tenemos que definir a que tipo de objeto tiene que convertir el objeto deserializado
        lista = serializer.Deserialize(stream) as List<string>;
    }
}

De esta forma tan sencilla ya tendríamos nuestros datos serializados en un archivo para poder deserializarlos para cuando arranquemos de nuevo nuestra aplicación.

Si tienes alguna duda, recuerda que tienes a tu disposición el foro de desarrollo de aplicaciones para Windows 8 en castellano, donde podrás compartir tus conocimientos con la comunidad de desarrolladores y encontrar ayuda para resolver tus dudas técnicas, y una Introducción al desarrollo de aplicaciones para Windows 8.

También puedes estar al día de todas las novedades a través de nuestros rincones en las redes sociales:

Un saludo,

      Adrián Fernández (@tracker086)