反序列化 xml 个属性

Deserializing xml attributes

我正在使用 XmlSerializer 将 xml 文档反序列化为一些 class 对象。有没有办法将节点的属性反序列化为 key/values 的字典,而不必为每个属性命名属性?示例:

public class Panel {

    public Dictionary<string, string> AllAttributes {get;set;}

    [XmlElement("image", typeof(Image))]
    [XmlElement("panel", typeof(Panel))]
    public object[] Items { get; set; }

}

您有两个选择:

  1. 实现你自己的序列化器。

  2. 实现一个映射函数:

    • 使用 XmlSerializer 反序列化为临时变量(例如 var temp),而不是直接反序列化到您的 class.
    • 调用映射函数并将临时变量传递给它temp。此函数创建 Panel class 的新实例,然后遍历 temp 属性并将它们映射到该实例,最后 returns 新实例。