public static T DeserializeFromXmlStream <T>(Stream xml) where T : class { var xs = new XmlSerializerContract().GetSerializer(typeof(T)); object obj = xs.Deserialize(xml); return(obj as T); }
static void Main () { A a = new A (); a.b = new B (); a.b.c = new C (); a.b.c.d = 5; a.b.c.e = "whatever"; MemoryStream ms = new MemoryStream (); StreamWriter sw = new StreamWriter (ms, Encoding.UTF8); XmlSerializerContract contract = new XmlSerializerContract (); XmlSerializer xs = contract.GetSerializer (typeof (A)); xs.Serialize (sw, a); ms.Position = 0; using (StreamReader sr = new StreamReader (ms, Encoding.UTF8, true)) { A ades = (A) xs.Deserialize (sr); Assert.IsNotNull (ades, "#1"); Assert.IsNotNull (ades.b, "#2"); Assert.IsNotNull (ades.b.c, "#3"); Assert.AreEqual (5, ades.b.c.d, "#4"); Assert.AreEqual ("whatever", ades.b.c.e, "#5"); } }
public static MemoryStream SerializeToXmlStream <T>(T obj, XmlSerializerNamespaces xmlns) { var ms = new MemoryStream(4 * 1024); var xs = new XmlSerializerContract().GetSerializer(typeof(T)); using (var xml = new XmlTextWriter(ms, new UTF8Encoding(false))) { xs.Serialize(xml, obj, xmlns); ms.Seek(0, SeekOrigin.Begin); } return(ms); }