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

发布于 2025-01-05 15:41:17 字数 947 浏览 4 评论 0原文

我有一堂课看起来像这样。

[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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

櫻之舞 2025-01-12 15:41:17

试试这个

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

Try this

[DataMember]
[XMLText]
  public string Identifier { get; set; }
离旧人 2025-01-12 15:41:17

我不确定您是否可以通过属性值指定这一点,但是您的类可以实现 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文