2010-05-14 1 views
2

Я звоню в веб-службу REST.Сериализация ответа XML от WebService к объекту (C#)

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

<?xml version=\"1.0\" encoding=\"utf-8\"?> 
<data> 
    <status>1</status> 
    <message>OK</message> 
    <results> 
    <result> 
     <account>12345</account> 
     <to></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; } 
} 

SMSMessage выглядит следующим образом:

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

Как вы можете видеть, я игнорирую часть возвращаемого элемента (flash, replace и т. Д.)

Каков наилучший способ для меня преобразовывать возвращаемый XML в этот объект?

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

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

ответ

2

Вы можете использовать только XmlSerializer, пока вы добавляете соответствующие атрибуты в поля ваших классов. Check these out for an example of some. Вы, несомненно, столкнетесь с ошибками в первые несколько раз, когда работаете с ним, но придерживайтесь его, потому что, как только вы это выясните, это отличный инструмент.

EDIT:

Here is a better place to find all of the available attributes. Просмотрите список для всего, что начинается с Xml и заканчивается атрибутом. Вы захотите узнать их все.

0

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