Vous devez utiliser l' xsd.exe
outil qui est installé avec le SDK Windows dans un répertoire similaire à:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin
Et sur les ordinateurs 64 bits:
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\bin
Et sur les ordinateurs Windows 10:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin
Lors de la première exécution, vous utilisez xsd.exe
et vous convertissez votre exemple de XML en un fichier XSD (fichier de schéma XML):
xsd yourfile.xml
Cela vous donne yourfile.xsd
, que dans un deuxième temps, vous pouvez convertir à nouveau en utilisant xsd.exe
une classe C #:
xsd yourfile.xsd /c
Cela devrait vous donner un fichier yourfile.cs
qui contiendra une classe C # que vous pouvez utiliser pour désérialiser le fichier XML que vous obtenez - quelque chose comme:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
msg resultingMessage = (msg)serializer.Deserialize(new XmlTextReader("yourfile.xml"));
Cela devrait plutôt bien fonctionner dans la plupart des cas.
Mise à jour: le sérialiseur XML prendra n'importe quel flux comme entrée - un fichier ou un flux mémoire conviendra:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(inputString));
msg resultingMessage = (msg)serializer.Deserialize(memStream);
ou utilisez un StringReader:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
StringReader rdr = new StringReader(inputString);
msg resultingMessage = (msg)serializer.Deserialize(rdr);