XMLArrayItem的XML反序列化问题

时间:2013-03-21 15:27:53

标签: .net xml-serialization c#-3.0

我必须反序列化以下XML:

<section>
 <class_id>Cls101</class_id>
 <sect_no>1</sect_no>
 <class_section>class section</class_section>
 <meet_days>
   <day>M</day>
   <day>T</day>
   <day>W</day>
 </meet_days>
</section>

我为此创建了以下类:

[Serializable]
[XmlRoot("section")]
public class Section
{
     [XmlElement("class_id")]
     public string ClassId { get; set; }

     [XmlElement("sect_no")]
     public string SectionNo { get; set; }

     [XmlElement("class_section")]
     public string ClassSection { get; set; }

     [XmlArray("meet_days")]
     [XmlArrayItem("day")]
     public List<Days> MeetDays { get; set; }
}

[Serializable]
public class Days
{
    [XmlElement("day")]
    public string Day { get; set; }
}

在反序列化的对象中,我为所有3行获取Day null

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

由于Day只有一个属性是字符串,因此请考虑删除Day类并将Section类更改为:

[XmlArray("meet_days")]
[XmlArrayItem("day")]
public List<string> MeetDays { get; set; }

这样,M,T和W值被映射到字符串而不是Day类中的字符串。

答案 1 :(得分:0)

您没有正确使用XmlArrayItem。它指定允许作为反序列化中的项目的类型。

尝试:

[XmlArrayItem(typeof(Days))]