2014-09-18 3 views
1

У меня есть такой XMLXML-де-сериализации массива

<?xml version="1.0" ?> 
<response> 
    <id-number>2979183</id-number> 
    <differentiator-question> 
     <prompt>How old are you?</prompt> 
     <type>age.range</type> 
     <answer>29 - 38</answer> 
     <answer>39 - 48</answer> 
     <answer>49 - 58</answer> 
     <answer>59 - 68</answer> 
     <answer>None of the above</answer> 
    </differentiator-question> 
    <error>Invalid username and password</error> 
</response> 

, который я пытаюсь десериализации с помощью встроенного механизма сериализации в .NET. создал такой класс

[XmlRoot("response")] 
public class IdologyAnswerMapping 
{ 
    [XmlElement("id-number")] 
    public string IdNumber { get; set; }  
    public class DifferentiatorQuestionType 
    { 
     [XmlElement("prompt")] 
     public string Prompt { get; set; } 

     [XmlElement("type")] 
     public string Type { get; set; } 

     [XmlArray("answer")] 
     public string[] Answers { get; set; } 
    } 

    [XmlElement("differentiator-question")] 
    public DifferentiatorQuestionType DifferentiatorQuestion { get; set; } 

    public static IdologyAnswerMapping FromXml(string xml) 
    { 
     XmlSerializer serializer = new XmlSerializer(typeof(IdologyAnswerMapping)); 
     IdologyAnswerMapping answer = (IdologyAnswerMapping)serializer.Deserialize(new StringReader(xml)); 
     return answer; 
    } 
} 

Но массив ответов имеет нулевой размер. Как поместить все теги <answer /> в массив ответов?

спасибо.

ответ

1

Использование XmlElement вместо XmlArray

[XmlElement("answer")] 
public string[] Answers { get; set; } 
+1

Отлично, это работает, как нужно! – Eugen

Смежные вопросы