2

我必须反序列化以下 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; }
}

在反序列化的对象中,我得到Daynull所有 3 行。

我在这里想念什么?

4

2 回答 2

1

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

尝试:

[XmlArrayItem(typeof(Days))]
于 2013-03-21T15:39:24.090 回答
1

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

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

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

于 2013-03-21T15:49:55.323 回答