¿Cómo convertir una cadena XML a Objeto en c#? deserializar

Existen varias formas de llenar un objeto por medio de valores incrustados en XML(deserialización) y esta que planteo a continuación es la forma más comprensible de hacerlo.
Teniendo el siguiente texto de xml:


<padre>
  <hijo>
    <id>18</id>
    <valor>CFE7785</valor>
    <entero>1</entero>
  </hijo>
<padre>

Primero tenemos que hacer un conjunto de clases las cuales nos ayudaran a guardar los valores:

    [XmlRoot("padre")]
    public class padre
    {
        [XmlElement("hijo")]
        public List lstHijos{ get; set; }
    }

    public class hijo
    {
        [XmlElement("id")]
        public int id { get; set; }
        [XmlElement("valor")]
        public string valor { get; set; }

        [XmlElement("entero")]
        public int entero { get; set; }

    }

Y ahora el proceso para la magia:


string xml= "<padre> <hijo> <id>18</id> <valor>CFE7785</valor> <entero>1</entero> </hijo> <padre>"

XmlSerializer serializer = new XmlSerializer(typeof(padre));
using (TextReader reader = new StringReader(xml))
{
        //de esta manera se deserializa
        padre result = (padre)serializer.Deserialize(reader);
}

Autor: Héctor de León

Desarrollador de software, lector compulsivo.