Вам необходимо использовать инструмент 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);