Musisz użyć xsd.exe
narzędzia instalowanego wraz z zestawem Windows SDK w katalogu podobnym do:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin
I na komputerach 64-bitowych:
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\bin
A na komputerach z systemem Windows 10:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin
Przy pierwszym uruchomieniu używasz xsd.exe
i konwertujesz przykładowy plik XML na plik XSD (plik schematu XML):
xsd yourfile.xml
To daje ci yourfile.xsd
, co w drugim kroku, możesz ponownie przekonwertować za xsd.exe
pomocą klasy C #:
xsd yourfile.xsd /c
To powinno dać ci plik, yourfile.cs
który będzie zawierał klasę C #, której możesz użyć do deserializacji otrzymanego pliku XML - coś takiego:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
msg resultingMessage = (msg)serializer.Deserialize(new XmlTextReader("yourfile.xml"));
Powinien działać całkiem dobrze w większości przypadków.
Aktualizacja: serializator XML pobierze dowolny strumień jako dane wejściowe - strumień pliku lub pamięci będzie w porządku:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(inputString));
msg resultingMessage = (msg)serializer.Deserialize(memStream);
lub użyj StringReader:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
StringReader rdr = new StringReader(inputString);
msg resultingMessage = (msg)serializer.Deserialize(rdr);