Вам нужно использовать xsd.exe
инструмент, который устанавливается вместе с Windows SDK в каталог, похожий на:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin
И на 64-битных компьютерах:
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\bin
И на компьютерах с Windows 10:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin
При первом запуске вы используете xsd.exe
и конвертируете образец XML в файл XSD (файл схемы XML):
xsd yourfile.xml
Это дает вам yourfile.xsd
, что на втором этапе вы можете снова преобразовать, используя xsd.exe
в класс C #:
xsd yourfile.xsd /c
Это должно дать вам файл, yourfile.cs
который будет содержать класс C #, который вы можете использовать для десериализации получаемого вами XML-файла - что-то вроде:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
msg resultingMessage = (msg)serializer.Deserialize(new XmlTextReader("yourfile.xml"));
Должно работать довольно хорошо для большинства случаев.
Обновление: XML-сериализатор будет принимать любой поток в качестве входных данных - либо файл, либо поток памяти будет в порядке:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(inputString));
msg resultingMessage = (msg)serializer.Deserialize(memStream);
или используйте StringReader:
XmlSerializer serializer = new XmlSerializer(typeof(msg));
StringReader rdr = new StringReader(inputString);
msg resultingMessage = (msg)serializer.Deserialize(rdr);