2014-07-10 171 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