数组的XML反序列化

本文关键字:反序列化 XML 数组 | 更新日期: 2023-09-27 18:22:35

我有这样一个xml

<?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("answerswer")]
        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;
    }
}

但是Answers数组的大小为零。如何将所有<answer />标记放入Answers数组?

谢谢。

数组的XML反序列化

使用XmlElement而不是XmlArray

[XmlElement("answerswer")]
public string[] Answers { get; set; }
相关文章: