2012-02-15 158 views
0

我有一個類似於以下的類。將XML反序列化爲對象時,類的默認屬性

[Serializable] 
[DataContract()] 
[XmlType(AnonymousType = true)] 
public partial class Reference 
{ 
    //-- Constructor 
    public Reference() { } 

    //-- Properties 
    [DataMember] 
    [XmlAttribute()] 
    public string Type {get;set;} 
    [DataMember] 
    public string Assignor { get; set; } 
    [DataMember] 
    public string Identifier { get; set; } 
    [DataMember] 
    public string System { get; set; } 
    [DataMember] 
    public string Format { get; set; } 
    [DataMember] 
    public string Value { get; set; } 

然後,我得到了一些XML,我想反序列化到這個類,它看起來像這樣。

<References> 
    <Reference Type="ShipmentId">SHPROD00324</Reference> 
</References> 

,並將其設置的類型屬性正確的,因爲[XMLAttribute],但我怎麼能指定那就是在參考元素(SHPROD00324)中的數據被放置在我的命名標識屬性?

我在尋找的是一些告訴反序列化的方法,如果在引用元素中指定了任何值,那麼它應該採用該值並將其設置在標識符屬性中。

在此先感謝。

問候 馬格努斯

回答

1

試試這個

[DataMember] 
[XMLText] 
    public string Identifier { get; set; } 
+0

是的,這確實起作用。謝謝 – 2012-02-16 07:15:56

1

我不知道,如果你可以通過屬性值指定這一點,但是你的類可以實現System.Xml.Serialization.IXmlSerializable並覆蓋ReadXml方法反序列自身但它需要。