【问题标题】:How to deserialize to property by attribute name and inner xml如何通过属性名称和内部 xml 反序列化为属性
【发布时间】:2013-01-11 13:58:21
【问题描述】:

我有一个这样的 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 属性。

请帮忙。

【问题讨论】:

  • 是否要求 XML 保持不变或者可以稍微改变一下?
  • 不,xml 来自另一个(不是我的)应用程序。我知道xml的结构不是很好。

标签: c# xml serialization deserialization


【解决方案1】:

你可以试试这个:

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; }
}

【讨论】:

  • 对不起,我没有提到我可以有多个“字段”标签。我已经更新了问题。
  • 是的......我认为这只是一种正确的方式。我以前也做过,看起来不可能做我想做的事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
相关资源
最近更新 更多