2015-05-18 5 views
0

Это мой XML я получаю от API:список XmlSerializer Deserialize только получает первый элемент

<?xml version="1.0" encoding="UTF-8"?> 

<response> 
<datetime>2015-05-18 11:37:32</datetime> 
<count>2</count> 
<smsleft>40920</smsleft> 
<sms><smsid>535041581</smsid><smsid>535041583</smsid></sms> 
</response> 

Это мой класс я пытаюсь разобрать его по адресу:

[XmlRoot("response")] 
public class SMSResponse 
{ 
    [XmlElement("sms")] 
    public List<smsid> Sms { get; set; } 
} 

public class smsid 
{ 
    [XmlElement("smsid")] 
    public string SmsID { get; set; } 
} 

Используя этот код:

XmlSerializer serializer = new XmlSerializer(typeof(SMSResponse)); 
using (TextReader reader = new StringReader(response)) 
{ 
    SMSResponse result = (SMSResponse)serializer.Deserialize(reader); 
} 

Однако я получаю только первый SmsID в своем списке, а не 2, как в ответе.

Что я делаю неправильно?

ответ

3

Вы объявили SmsID как string, так что только один можно десеризировать. Вы указали Sms как список, но только один из них существует в вашем входном файле.

Try:

[XmlRoot("response")] 
public class SMSResponse 
{ 
    [XmlArray("sms")] 
    [XmlArrayItem("smsid")] 
    public List<string> SmsID { get; set; } 
} 
0

Изменить код этого

[XmlRoot("response")] 
public class SMSResponse 
{ 
    [XmlElement("sms")] 
    public SMS Sms { get; set; } 
} 

public class SMS 
{ 
    [XmlElement("smsid")] 
    public List<string> SmsID { get; set; } 
} 
0
[XmlRoot("response")] 
public class SMSResponse 
{ 
    [XmlArray(ElementName = "sms")] 
    [XmlArrayItem(ElementName = "smsid", Type = typeof(smsid))] 
    public List<smsid> Sms { get; set; } 
} 

public class smsid 
{ 
    [XmlText] 
    public string SmsID { get; set; } 
} 
Смежные вопросы