【发布时间】:2015-07-08 14:40:48
【问题描述】:
假设我正在尝试反序列化以下 XML(在 C# 程序中):
<Data>
<DataItem Id="1" Attrib1="Val1_1" Attrib2="Val2_1" Attrib3="Val3_1" />
<DataItem Id="2" Attrib1="Val1_2" Attrib4="Val4_2" />
<DataItem Id="3" Attrib3="Val3_1" Attrib5="Val5_3" />
</Data>
因此,每个DataItem 元素将有一个Id 字段和一组我想捕获/存储的随机属性。
我想象最终包含的类可能如下所示:
[XmlRootAttribute("Data")]
public class Data
{
[XmlElement("DataItem")]
public DataItem[] Items { get; set; }
}
public class DataItem
{
public Dictionary<string, object> Vals { get; set; }
[XmlIgnore]
public string Id { get { return (string)Vals[Id]; } }
}
(如果我在这个结构上错了,请告诉我——这对我来说仍然很新!!)
但我不确定如何将属性反序列化为我的字典的 [Key][Value] 对。
我发现this question 和this other answer 似乎指向了我正确的方向(尽管不同),但我不知道如何正确实现它,并且知道这应该相当容易。
非常感谢任何有关如何完成此操作的帮助/链接/示例!
谢谢!!!
【问题讨论】:
-
你不可能用属性来做这件事。您需要实现
IXmlSerializable并手动编写DataItem的序列化代码。
标签: c# xml dictionary serialization deserialization