using System.Globalization;
public static void Main()
string xml ="<Persona>" +
"<Nombre>Unbreakable</Nombre>" +
"<Apellido>Stormrage</Apellido>" +
var persona = ConvertXmlToObject<Persona>(xml);
Console.WriteLine(persona);
public static T ConvertXmlToObject<T>(string valorXml) where T : new()
var xml = XElement.Parse(valorXml);
foreach (var el in xml.Descendants())
var prop = typeof(T).GetProperty(el.Name.LocalName);
if (prop != null && prop.CanWrite)
prop.SetValue(obj, Convert.ChangeType(el.Value, prop.PropertyType, CultureInfo.InvariantCulture));
public string Nombre{ get; set; }
public string Apellido { get; set; }
public int Edad { get; set; }
public override string ToString()
return string.Format("Nombre: {0}, Apellido: {1}, Edad: {2}", Nombre, Apellido, Edad);