Сериализовать можно что угодно
using System.Text;
using System.Xml;
using System.Xml.Serialization;
private class Utf8StringWriter : StringWriter
{
public override Encoding Encoding { get { return Encoding.UTF8; } }
}
var xs = new XmlSerializer(ObjectName.GetType());
var xml = new Utf8StringWriter();
xs.Serialize(xml, ObjectName);//xml.ToString() - тут строка содержимого в xml формате, оч удобно
И обратно
private static T Deserialize<T>(string xml)
{
var xs = new XmlSerializer(typeof(T));
return (T)xs.Deserialize(new StringReader(xml));
}
ObjectNameType ObjectName = Deserialize<ObjectNameType>(plaintext);//та самая строка xml содержимого на входе, объект нужного типа на выходе