【发布时间】:2014-10-25 11:51:51
【问题描述】:
我有一个这样的 XML 结构:
<QueryResult>
<Submission>
<Sections>
<Section>
<!--Section Data-->
</Section>
</Sections>
</Submission>
</QueryResult>
我正在尝试反序列化 - 我永远不必序列化 - 这是一个 Submission 对象,例如:
public partial class Submission : CanvasModel
{
private DateTime _date;
private DateTime _deviceDate;
private List<Section> _sections = new List<Section>();
[XmlIgnore]
public ICollection<Section> Sections
{
get
{
return _sections;
}
set
{
_sections = value.ToList();
}
}
//[XmlArrayItem("Section", IsNullable = false)]
[XmlArrayItem(typeof(Section), ElementName = "Sections", IsNullable = false)]
public Section[] SectionsArray
{
get
{
return _sections.ToArray();
}
set
{
_sections = new List<Section>(value);
}
}
}
然而 XML 元素 Sections 没有反序列化。仅当Section[] 属性与XML 元素Sections 同名时才有效。我正在与XmlArrayItem 属性搏斗,但我输了。在其他地方,当名称不同时,我使用XmlElement 属性来指定元素名称,一切正常。但是,我不允许在同一属性上使用 XmlElement 和 XmlArrayItem。
我使用XmlArrayItem 属性将Sections XML 元素反序列化为SectionsArray 属性的正确方法是什么?
顺便说一句,我希望我的 EF 数据模型需要的广泛使用的属性 public ICollection<Section> Sections 具有文档名称 Sections,原因有几个,所以交换这两个名称确实是我最后的手段.我想保留当前的 SectionsArray 属性纯粹用于反序列化。
【问题讨论】:
标签: c# xml serialization xml-serialization deserialization