如何通过属性名称和内部xml反序列化属性

时间:2013-01-11 13:58:22

标签: c# xml serialization deserialization

我有一个像这样的xml:

<employees>
  <employee id="11629">
   <field id="displayName">First Last</field>
   <field id="email">test@test.com</field>
  </employee>
</employees>

我创建了一个类:

public class Employee
{
    [XmlAttribute("id")]
    public string Id { get; set; }

    public string DisplayName { get; set; }

    public string Email { get; set; }
}

对于Id,一切都运行良好,但我无法弄清楚如何但我们可以为DisplayName属性设置值。

请帮忙。

1 个答案:

答案 0 :(得分:2)

你可以试试这个:

public class Employee
{
    [XmlAttribute("id")]
    public string Id { get; set; }

    [XmlElement("field")]
    public List<Field> Fields { get; set; }

    public string DisplayName 
    { 
        get 
        {
            return Fields.Where(i => i.Id == "displayName").FirstOrDefault().Value;
        } 
    }

    public string Email
    {
        get
        {
            return Fields.Where(i => i.Id == "email").FirstOrDefault().Value;
        }
    }
}

public class Field
{
    [XmlAttribute("id")]
    public string Id { get; set; }

    [XmlText]
    public string Value { get; set; }
}