从XML填充类对象

时间:2014-07-10 06:57:19

标签: c# xml deserialization

我在XML下面给出了一些填充问题,我知道如何从XML填充类对象(反序列化),但对于我来说,在XML之下是很棘手的。

<Header>
      <To EmailType="Personal">abc@abc.com</To>
      <From EmailType="Work">abc2@abc.com</From>
</Header>

如果我在下面创建类,它只会填充XML的数据部分而不是属性

[XmlRoot(ElementName = "Header")]
    public class Header
    {
        public Header()
        {

        }

        [XmlElement(ElementName = "To", Form = XmlSchemaForm.Unqualified)]
        public string To { get; set; }


        [XmlElement(ElementName = "From", Form = XmlSchemaForm.Unqualified)]
        public string From { get; set; }
}

我希望能够解析&amp;保存属性和&amp;数据

1 个答案:

答案 0 :(得分:3)

我假设您想要的是将其反序列化为:

public string ToAddress {get;set;}
public EmailType ToEmailType {get;set;} // an enum
public string FromAddress {get;set;}
public EmailType FromEmailType {get;set;}

不幸的是,XmlSerializer无法做到这一点。你必须有一个分层模型:

public EmailDetails To {get;set;}
public EmailDetails From {get;set;}

...

public class EmailDetails {
    [XmlAttribute]
    public EmailType EmailType {get;set;}
    [XmlText]
    public string Address {get;set;}
}

或者,您必须通过XElement或类似手动解析它。