Deserialize from string instead TextReader
public static string XmlSerializeToString(this object objectInstance){ var serializer = new XmlSerializer(objectInstance.GetType()); var sb = new StringBuilder(); using (TextWriter writer = new StringWriter(sb)) { serializer.Serialize(writer, objectInstance); } return sb.ToString();}public static T XmlDeserializeFromString<T>(this string objectData){ return (T)XmlDeserializeFromString(objectData, typeof(T));}public static object XmlDeserializeFromString(this string objectData, Type type){ var serializer = new XmlSerializer(type); object result; using (TextReader reader = new StringReader(objectData)) { result = serializer.Deserialize(reader); } return result;}
To use it:
//Make XMLvar settings = new ObjectCustomerSettings();var xmlString = settings.XmlSerializeToString();//Make Objectvar settings = xmlString.XmlDeserializeFromString<ObjectCustomerSettings>();
If you have the XML stored inside a string variable you could use a StringReader:
var xml = @"<car/>";var serializer = new XmlSerializer(typeof(Car));using (var reader = new StringReader(xml)){ var car = (Car)serializer.Deserialize(reader);}
1-liner, takes a XML string text
and YourType
as the expected object type. not very different from other answers, just compressed to 1 line:
var result = (YourType)new XmlSerializer(typeof(YourType)).Deserialize(new StringReader(text));