No hace mucho un compañero de los foros de Stratos-AD venia preguntando como podría implementar un sistema para guardar partidas de su juego en XNA y después volver a cargarlas, no en si el como el organizar los datos e información del juego y como gestionarlo en un archivo si no en si como podría exportar e importar fácilmente información a un archivo en disco. Esto me recordó que yo en su día, cuando empece a programar en .NET, me encontré con el mismo problema y que esto es una duda que a muchos nos surge.
En Visual Basic 6.0, donde estuve muchos años programando, esto era relativamente fácil ya que mediante las funciones integradas para gestionar la escritura y lectura de archivos en formato binario era tan fácil como pasar la propia variable de estructura de datos como parámetro a escribir o leer, Visual Basic 6.0 se encargaba de volcar en formato binario el contenido integro de la variable y despues permitía volver a crear la variable con el mismo contenido. Supongo que en C/C++ sera igual de directo, sin embargo en .NET ya no era tan fácil, no al menos de la misma forma. Aquí no podías llamar a las funciones de System.IO y decirle que te volcara la variable directamente en un archivo. Sin embargo si que existe una manera sencilla de hacer esto, mediante la serialización a XML.
Resumiendo mucho, la serialización a XML es un mecanismo que permite convertir una estructura de datos en una estructura de texto en formato XML. Este mecanismo esta presente en varias tecnologías de programación como .NET o Java. Yo voy a explicar mi ejemplo en .NET mediante C#.