Si tiene instalado el kit de previsualización WCF Resto de arranque, hay un truco:
- abra Visual Studio
- elegir sus contenidos nodo XML (el XML que conforma uno de los nodos) y copiar en el portapapeles
- desde el menú "Editar" en Visual Studio, elige "XML pegar como Tipos"
Esto pegará el código XML que está en el portapapeles en el proyecto como una clase C# que es capaz de deserializar ese XML exacto. ¡Bastante ingenioso!
ver estas entradas de blog al respecto:
Eso debería guardar un montón de escribir y hacer la vida mucho más fácil!
ACTUALIZACIÓN:
bien, ya tiene sus clases generadas a partir del XML que vuelvas. Ahora necesita convertir un XmlNode
a su clase.
Vas a tener que hacer algo como esto:
private static T ConvertNode<T>(XmlNode node) where T: class
{
MemoryStream stm = new MemoryStream();
StreamWriter stw = new StreamWriter(stm);
stw.Write(node.OuterXml);
stw.Flush();
stm.Position = 0;
XmlSerializer ser = new XmlSerializer(typeof(T));
T result = (ser.Deserialize(stm) as T);
return result;
}
tiene que escribir la representación XML (propiedad .OuterXml
) del XmlNode
a una corriente (en este caso un MemoryStream
) y luego usar el XmlSerializer
para serializar respaldar el objeto de esa corriente
Puede hacerlo con el método genérico y llamar
Customer myCustomer = ConvertNode<Customer>(xmlNode);
o incluso se podría convertir ese código en cualquiera de un método de extensión de la clase XmlNode
por lo que podría escribir:
Customer myCustomer = xmlNode.ConvertNode<Customer>();
Marc
Hola, ya tengo los objetos del xsd, así que realmente no necesito hacer este paso. Estoy queriendo aprender cuál es la mejor manera de ir desde xmlNodes [] (objeto serializado). – 76mel