2014-07-10 134 views
2

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

<Header> 
     <To EmailType="Personal">[email protected]</To> 
     <From EmailType="Work">[email protected]</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; } 
} 

我希望能够解析&节省属性&数据。

+0

http://stackoverflow.com/questions/364253/how-to-deserialize-xml-document –

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+0

@JohnSaunders好的,谢谢。 – KhanZeeshan

回答

2

我假设你想要的是反序列化,就像这样:

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或类似手动解析它。

+0

谢谢,那正是我想要的。 – KhanZeeshan