Сериализация XML-ответа от WebService к объекту (C#)

Я вызываю веб-сервис REST.

Ответ выглядит примерно так:

<?xml version=\"1.0\" encoding=\"utf-8\"?>
<data>
  <status>1</status>
  <message>OK</message>
  <results>
    <result>
      <account>12345</account>
      <to>012345678</to>
      <from>054321</from>
      <message>Testing</message>
      <flash></flash>
      <replace></replace>
      <report></report>
      <concat></concat>
      <id>f8d3eea1cbf6771a4bb02af3fb15253e</id>
    </result>
  </results>
</data>

У меня есть класс под названием "SMSSendingResponse", который выглядит так:

public class SMSSendingResponse
{
    public string AccountNumber { get; set; }
    public string Status { get; set; }
    public string Message { get; set; }
    public string ResponseID { get; set; }
    public SMSMessage SMSMessage { get; set; }
}

SMS-сообщение выглядит так:

public class SMSMessage
{
    public string To { get; set; }
    public string From { get; set; }
    public string Message { get; set; }
}

Как видите, я игнорирую некоторые возвращенные элементы (прошить, заменить и т.д.)

Каков наилучший способ сериализации возвращенного XML в этот объект?

Я пытался использовать XmlSerializer, но это вызвало ошибку... Я думаю, потому что я не сериализую сначала с помощью XmlSerializer.

Если бы это был Json, я бы использовал библиотеку NewtonSoft.Json... Хотя я полагаю, что могу преобразовать xml в json, а затем сериализовать таким образом, есть ли лучший способ?


person Alex    schedule 14.05.2010    source источник


Ответы (2)


Вы можете использовать XmlSerializer просто отлично, если вы добавите соответствующие атрибуты в поля своих классов. Ознакомьтесь с некоторыми примерами. Вы, несомненно, столкнетесь с ошибками в первые несколько раз, когда будете работать с ним, но придерживайтесь его, потому что, как только вы разберетесь с ним, это отличный инструмент.

РЕДАКТИРОВАТЬ:

Здесь лучше всего найти все доступные атрибуты. Просмотрите список и найдите все, что начинается с Xml и заканчивается атрибутом. Вы захотите узнать их все.

person Nick Larsen    schedule 14.05.2010

Вы можете использовать xsd.exe для извлечения схемы из файла xml и создания соответствующего класса С#. Вы можете использовать сгенерированный класс для сериализации и десериализации xml. Если вы покажете код, нам будет легче определить ошибку.

person Giorgi    schedule 14.05.2010