È necessario utilizzare lo xsd.exe
strumento che viene installato con Windows SDK in una directory simile a:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin
E su computer a 64 bit:
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\bin
E su computer Windows 10:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin
Al primo avvio, usi xsd.exe
e converti il tuo XML di esempio in un file XSD (file di schema XML):
xsd yourfile.xml
Questo ti dà yourfile.xsd
, che in un secondo passaggio, puoi convertire di nuovo usando xsd.exe
in una classe C #:
xsd yourfile.xsd /c
Questo dovrebbe darti un file yourfile.cs
che conterrà una classe C # che puoi usare per deserializzare il file XML che stai ricevendo - qualcosa del tipo:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
msg resultingMessage = (msg)serializer.Deserialize(new XmlTextReader("yourfile.xml"));
Dovrebbe funzionare abbastanza bene nella maggior parte dei casi.
Aggiornamento: il serializzatore XML prenderà qualsiasi flusso come input - un file o un flusso di memoria andrà bene:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(inputString));
msg resultingMessage = (msg)serializer.Deserialize(memStream);
o usa un StringReader:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
StringReader rdr = new StringReader(inputString);
msg resultingMessage = (msg)serializer.Deserialize(rdr);