Este código (C# DotNet 1.0 en adelante) funciona bastante bien para serializar la mayoría de los objetos a XML. (Y viceversa) No funciona para los objetos que contiene ArrayLists, y si es posible utilizando sólo palo para matrices
using System;
using System.IO;
using System.Text;
using System.Xml.Serialization;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
public static string Serialize(object objectToSerialize)
{
MemoryStream mem = new MemoryStream();
XmlSerializer ser = new XmlSerializer(objectToSerialize.GetType());
ser.Serialize(mem, objectToSerialize);
ASCIIEncoding ascii = new ASCIIEncoding();
return ascii.GetString(mem.ToArray());
}
public static object Deserialize(Type typeToDeserialize, string xmlString)
{
byte[] bytes = Encoding.UTF8.GetBytes(xmlString);
MemoryStream mem = new MemoryStream(bytes);
XmlSerializer ser = new XmlSerializer(typeToDeserialize);
return ser.Deserialize(mem);
}
[+1] Vale la pena señalar que también debe usar/c para generar clases y/d para generar una clase derivada de DataSet al usar un XSD. De lo contrario, aparecerá el siguiente mensaje de error "Error: solo puede generar una clase o conjuntos de datos". – Marc