XmlSerializer.Deserialize List 项目

我已经尝试了所有可以在SO和其他地方找到的解决方案,但似乎无法弄清楚为什么这不起作用。

将XML字符串直接反序列化为对象,该对象具有一个属性 – 一个List:

[XmlTypeAttribute(AnonymousType = true)] public class UpdateData { [XmlArrayItem(ElementName = "Updates")] public List Updates { get; set; } public UpdateData() { Updates = new List(); } } public class Update { [XmlElement(ElementName = "MemberID")] public int MemberID { get; set; } [XmlElement(ElementName = "AnalysisID")] public int AnalysisID { get; set; } [XmlElement(ElementName = "MemberName")] public string MemberName { get; set; } [XmlElement(ElementName = "RecordDate")] public DateTime RecordDate { get; set; } } 

这是反序列化代码:

 private object DeserialzeXml(string xml) { var xmlSer = new XmlSerializer(typeof(UpdateData), new XmlRootAttribute("UpdateData")); var stringReader = new StringReader(xml); return xmlSer.Deserialize(stringReader); } 

这是XML:

     1 1 XXXXXXXXXXXXX   1 2 YYYYYYYYYYYYY   1 3 ZZZZZZZZZZZZ    

此代码编译并运行,并返回UpdateData类型的对象,但Updates属性为空。 有任何想法吗?

尝试将列表中的属性更改为:

 [XmlArray(ElementName="Updates")] [XmlArrayItem(ElementName="Update")] public List Updates { get; set; }