Sie müssen das xsd.exe
Tool, das mit dem Windows SDK installiert wird, in einem ähnlichen Verzeichnis verwenden:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin
Und auf 64-Bit-Computern:
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\bin
Und auf Windows 10-Computern:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin
Beim ersten Durchlauf verwenden xsd.exe
Sie Ihr Beispiel-XML und konvertieren es in eine XSD-Datei (XML-Schemadatei):
xsd yourfile.xml
Dies gibt Ihnen yourfile.xsd
, was Sie in einem zweiten Schritt erneut mit xsd.exe
in eine C # -Klasse konvertieren können :
xsd yourfile.xsd /c
Dies sollte Ihnen eine Datei yourfile.cs
geben, die eine C # -Klasse enthält, mit der Sie die XML-Datei, die Sie erhalten, deserialisieren können - etwa:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
msg resultingMessage = (msg)serializer.Deserialize(new XmlTextReader("yourfile.xml"));
Sollte in den meisten Fällen ziemlich gut funktionieren.
Update: Der XML-Serializer nimmt jeden Stream als Eingabe - entweder eine Datei oder ein Speicher-Stream ist in Ordnung:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(inputString));
msg resultingMessage = (msg)serializer.Deserialize(memStream);
oder verwenden Sie einen StringReader:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
StringReader rdr = new StringReader(inputString);
msg resultingMessage = (msg)serializer.Deserialize(rdr);