将XML反序列化为对象时类的默认属性

时间:2012-02-15 13:47:03

标签: c# xml-deserialization

我有一个看起来像这样的课程。

[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]以来设置Type属性是正确的,但是如何指定Reference元素(SHPROD00324)中的数据放在我的名为Identifier的属性中?

我正在寻找的是一种告诉反序列化的方法,如果在Reference元素中指定了任何值,那么它应该采用该值并将其设置在identifier属性中。

提前致谢。

祝你好运 马格努斯

2 个答案:

答案 0 :(得分:1)

我不确定您是否可以通过属性值指定它,但是您的类可以实现System.Xml.Serialization.IXmlSerializable并覆盖ReadXml方法以对其自身进行反序列化,但是它需要。

答案 1 :(得分:1)

试试这个

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