反序列化相对路径XML

时间:2019-02-26 12:51:10

标签: c# xml serialization onix

在C#中,我想反序列化一些相对位置很重要的Xml。以下Xml来自名为Onix的图书标准:

<Stock>
  <OnHand>1</OnHand>
  <Proximity>xx</Proximity>
  <Reserved>2</Reserved>
  <Proximity>yy</Proximity>
  <OnOrder>3</OnOrder>
  <Proximity>zz</Proximity>
  <Cbo>4</Cbo>
  <Proximity>zz</Proximity>
</Stock>

如您所见,每第二行称为“邻近”。这些字段与上面的字段一致。

如果所有字段都是必填字段,那将没有问题,并且代码如下所示:

[XmlElement("OnHand", Order = 0)]public int OnHand { get; set; }
[XmlElement("Proximity", Order = 1)] public string OnHandProximity { get; set; }

[XmlElement("Reserved", Order = 2)] public int Reserved { get; set; }
[XmlElement("Proximity", Order = 3)] public string ReservedProximity { get; set; }

[XmlElement("OnOrder", Order = 4)] public int OnOrder { get; set; }
[XmlElement("Proximity", Order = 5)] public string OnOrderProximity { get; set; }

[XmlElement("CBO", Order = 6)] public int Cbo { get; set; }
[XmlElement("Proximity", Order = 7)] public string CboProximity { get; set; }

但是4个邻近字段之前已紧密绑定到该字段,并且每对字段不是强制性的。例如。您可以获取缺少前两行的xml。

是否有针对此类问题的属性?

1 个答案:

答案 0 :(得分:1)

您正在使用Order属性。
int标记为int?,并将所有字段标记为Nullable:

    [XmlElement("OnHand", Order = 0, IsNullable = true)]
    public int? OnHand { get; set; }

    [XmlElement("Proximity", Order = 1, IsNullable = true)]
    public string OnHandProximity { get; set; }

XmlSerializer应该可以处理此问题。