viernes, 18 de octubre de 2013

Introducir contenido de un XDocument a un XmlReader, en una deserealización

Tengo un Xdocument que contiene la respuesta XML de un webservice. Además tengo una clase empleado que tiene los campos y los decoradores adecuados al esquema para poder hacer una deserialización directa.

Y entonces me veo en el marrón de siempre que tengo que trabajar con stream, el método Deserialize requiere que trabaje con un XmlReader, que en sus tropecientas sobrecargas parte de un stream que, como buen IO, está diseñado principalmente para ser utilizado con un fichero físico.

Después de un buen rato de desesperación, el intellisense me ha dado la solución más simple y obvia, y es que el objeto de tipo XDocument tiene un método llamado CreateReader() que me devuelve un XmlReader…

        public Empleado ToEmpleado(XDocument xmlDocument)
        {
           
var empleado = new Empleado();

           
XmlSerializer serializer = new XmlSerializer(typeof(Empleado));
            empleado = (
Empleado)serializer.Deserialize(xmlDocument.CreateReader());

            return empleado;       
        }

Espero que sea de utilidad.

No hay comentarios: