Debe usar la xsd.exe
herramienta que se instala con el SDK de Windows en un directorio similar a:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin
Y en computadoras de 64 bits:
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\bin
Y en computadoras con Windows 10:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin
En la primera ejecución, usa xsd.exe
y convierte su XML de muestra en un archivo XSD (archivo de esquema XML):
xsd yourfile.xml
Esto le da yourfile.xsd
, que en un segundo paso, puede convertir nuevamente usando xsd.exe
una clase de C #:
xsd yourfile.xsd /c
Esto debería darle un archivo yourfile.cs
que contendrá una clase C # que puede usar para deserializar el archivo XML que está obteniendo, algo como:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
msg resultingMessage = (msg)serializer.Deserialize(new XmlTextReader("yourfile.xml"));
Debería funcionar bastante bien para la mayoría de los casos.
Actualización: el serializador XML tomará cualquier flujo como su entrada, ya sea un archivo o un flujo de memoria estará bien:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(inputString));
msg resultingMessage = (msg)serializer.Deserialize(memStream);
o use un StringReader:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
StringReader rdr = new StringReader(inputString);
msg resultingMessage = (msg)serializer.Deserialize(rdr);