Você precisa usar a xsd.exe
ferramenta que é instalada com o Windows SDK em um diretório semelhante a:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin
E em computadores de 64 bits:
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\bin
E nos computadores com Windows 10:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin
Na primeira execução, você usa xsd.exe
e converte seu XML de amostra em um arquivo XSD (arquivo de esquema XML):
xsd yourfile.xml
Isso fornece a você yourfile.xsd
, que em uma segunda etapa, você pode converter novamente usando xsd.exe
a classe C #:
xsd yourfile.xsd /c
Isso deve fornecer um arquivo yourfile.cs
que conterá uma classe C # que você pode usar para desserializar o arquivo XML que está recebendo - algo como:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
msg resultingMessage = (msg)serializer.Deserialize(new XmlTextReader("yourfile.xml"));
Deve funcionar muito bem na maioria dos casos.
Atualização: o serializador XML aceita qualquer fluxo como entrada - um arquivo ou um fluxo de memória ficará bem:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(inputString));
msg resultingMessage = (msg)serializer.Deserialize(memStream);
ou use um StringReader:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
StringReader rdr = new StringReader(inputString);
msg resultingMessage = (msg)serializer.Deserialize(rdr);