将XML反序列化为对象时,类的默认属性
问题描述:
我有一个类似于以下的类。将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)中的数据被放置在我的命名标识属性?
我在寻找的是一些告诉反序列化的方法,如果在引用元素中指定了任何值,那么它应该采用该值并将其设置在标识符属性中。
在此先感谢。
问候 马格努斯
答
试试这个
[DataMember]
[XMLText]
public string Identifier { get; set; }
答
我不知道,如果你可以通过属性值指定这一点,但是你的类可以实现System.Xml.Serialization.IXmlSerializable并覆盖ReadXml方法反序列自身但它需要。
是的,这确实起作用。谢谢 – 2012-02-16 07:15:56