List<string> -> xml 反序列化
List<string> -> xml deserialization
我有以下 xml 文件:
<ItemList>
<Item id="item-aa-00" status="TYPE1">
<Elements>
<element>element121</element>
</Elements>
</Item>
<Item id="item-aa-01" status="TYPE2">
<Elements>
<element>element122</element>
<element>element123</element>
<element>element124</element>
</Elements>
</Item>
</ItemList>
我正在尝试使用以下模型对其进行反序列化:
[DataContract]
public enum ItemStatusEnum
{
[EnumMember(Value = "TYPE1")]
TYPE1 = 10,
[EnumMember(Value = "TYPE2")]
TYPE2 = 20
}
[XmlRoot("Item")]
[DataContract(Name = "Item")]
public class ItemDto
{
[DataMember(Name = "id")]
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
[DataMember(Name = "candidateElements")]
[XmlIgnore]
public IEnumerable<string> Elements { get; set; }
[XmlArray("Elements")]
[XmlArrayItem("element"), Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public List<string> CandidateElementsSurrogate { get { return Elements .ToList(); } set { Elements = value; } }
[DataMember(Name = "status")]
[XmlAttribute(AttributeName = "status")]
public ItemStatusEnum Status { get; set; }
public ItemDto()
{
this.Elements = new List<string>();
}
}
[XmlRoot("ItemList")]
[DataContract(Name = "ItemListDto", Namespace = "")]
public class ItemListDto
{
[XmlElement("Item")]
[DataMember(Name = "myElements")]
public List<ItemDto> myElements { get; set; }
}
此模型设法反序列化我的 xml 文件,但 Elements 集合仍然为空。我缺少什么?
我已经更改了这两个属性并且可以反序列化您的 xml:
[XmlIgnore]
public List<string> Elements { get; set; }
[XmlArray("Elements")]
[XmlArrayItem("element")]
public List<string> CandidateElementsSurrogate { get { return Elements; } set { Elements = value; } }
我已经删除了 DataMember
属性,它们不被反序列化使用。
我有以下 xml 文件:
<ItemList>
<Item id="item-aa-00" status="TYPE1">
<Elements>
<element>element121</element>
</Elements>
</Item>
<Item id="item-aa-01" status="TYPE2">
<Elements>
<element>element122</element>
<element>element123</element>
<element>element124</element>
</Elements>
</Item>
</ItemList>
我正在尝试使用以下模型对其进行反序列化:
[DataContract]
public enum ItemStatusEnum
{
[EnumMember(Value = "TYPE1")]
TYPE1 = 10,
[EnumMember(Value = "TYPE2")]
TYPE2 = 20
}
[XmlRoot("Item")]
[DataContract(Name = "Item")]
public class ItemDto
{
[DataMember(Name = "id")]
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
[DataMember(Name = "candidateElements")]
[XmlIgnore]
public IEnumerable<string> Elements { get; set; }
[XmlArray("Elements")]
[XmlArrayItem("element"), Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public List<string> CandidateElementsSurrogate { get { return Elements .ToList(); } set { Elements = value; } }
[DataMember(Name = "status")]
[XmlAttribute(AttributeName = "status")]
public ItemStatusEnum Status { get; set; }
public ItemDto()
{
this.Elements = new List<string>();
}
}
[XmlRoot("ItemList")]
[DataContract(Name = "ItemListDto", Namespace = "")]
public class ItemListDto
{
[XmlElement("Item")]
[DataMember(Name = "myElements")]
public List<ItemDto> myElements { get; set; }
}
此模型设法反序列化我的 xml 文件,但 Elements 集合仍然为空。我缺少什么?
我已经更改了这两个属性并且可以反序列化您的 xml:
[XmlIgnore]
public List<string> Elements { get; set; }
[XmlArray("Elements")]
[XmlArrayItem("element")]
public List<string> CandidateElementsSurrogate { get { return Elements; } set { Elements = value; } }
我已经删除了 DataMember
属性,它们不被反序列化使用。