Десериализовать строку xml в объекты c # - PullRequest
1 голос
/ 30 апреля 2019

У меня есть этот XML, возвращенный из службы Refit rest (WorkflowMax API):

<Response api-method=\"Current\"><Status>OK</Status><Jobs><Job><ID>J000002</ID><Name>Callout</Name><Description></Description><Client><ID>20970938</ID><Name>Big Co</Name></Client><ClientOrderNumber></ClientOrderNumber><State>Planned</State><StartDate>2019-04-25T00:00:00</StartDate><DueDate>2019-06-01T00:00:00</DueDate><Contact><ID>12918947</ID><Name>A Smith</Name></Contact><InternalID>34476268</InternalID><Manager><ID>787929</ID><Name>T Smith</Name></Manager><Partner><ID>787929</ID><Name>T Smith</Name></Partner><Assigned><Staff><ID>787929</ID><Name>T Smith</Name></Staff></Assigned></Job><Job><ID>J000003</ID><Name>Call </Name><Description></Description><Client><ID>20982774</ID><Name>Test Group</Name></Client><ClientOrderNumber></ClientOrderNumber><State>Planned</State><StartDate>2019-04-25T00:00:00</StartDate><DueDate>2019-04-25T00:00:00</DueDate><Contact><ID>12924082</ID><Name>S Smith</Name></Contact><InternalID>34476286</InternalID><Partner><ID>787929</ID><Name>T Smith</Name></Partner><Assigned><Staff><ID>787929</ID><Name>T Smith</Name></Staff></Assigned></Job></Jobs></Response>

Я хочу преобразовать в несколько объектов C # Job.Может кто-нибудь предложить простой способ?

Попробовал Используя визуальную студию Paste Special «Вставить XML как классы» и просто вставив в одну часть «задания» XML, он создает довольно сложный класс, а затем не знает, какчтобы десериализовать в класс, он затем проксировал

1 Ответ

0 голосов
/ 30 апреля 2019

Используйте этот удобный веб-сайт для генерации простых классов, которые затем можно использовать для сериализации или десериализации XML до: https://xmltocsharp.azurewebsites.net/

Я бы использовал встроенный класс сериализатора XML для сериализации или десериализации ваших классов / XML: https://docs.microsoft.com/en-us/dotnet/api/system.xml.serialization.xmlserializer?view=netframework-4.8

Пример кода:

using (TextReader reader = new StreamReader(path))
{
  XmlSerializer serializer = new XmlSerializer(typeof(Job));
  return (Job)serializer.Deserialize(reader);
}
...