将 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] 以来,它设置了正确的类型属性,但是如何指定将 Reference 元素 (SHPROD00324) 中的数据放置在名为 Identifier 的属性中?
我正在寻找的是某种方式告诉反序列化,如果 Reference 元素中指定了任何值,那么它应该采用该值并将其设置在标识符属性中。
提前致谢。
此致 马格努斯
I have a class that looks like this.
[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; }
Then I got some XML that I want to deserialize into this class, it looks like this.
<References>
<Reference Type="ShipmentId">SHPROD00324</Reference>
</References>
And it set the Type-property correct since the [XMLAttribute] but how can I specified that the data that is in the Reference element (SHPROD00324) is placed in my property named Identifier?
What I am looking for is some way of telling the deserializing that if there is any value specified in the Reference element then it should take that value and set it in the identifier property.
Thanks in advance.
Best regards
Magnus
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个
Try this
我不确定您是否可以通过属性值指定这一点,但是您的类可以实现 System.Xml.Serialization.IXmlSerialized 并重写 ReadXml 方法以反序列化其自身,但需要这样做。
I'm not sure if you can specify this by the attribute values, however your class could implement System.Xml.Serialization.IXmlSerializable and override the ReadXml method to de-serialize its self however it needs to.