在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>正如你所看到的,每2行都被称为“接近”。这些字段与上面的字段相匹配。
如果所有字段都是强制性的,那么就没有问题,代码如下所示:
[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个近邻字段与之前的字段紧密绑定,并且每个字段都不是强制的。例如,在缺少前2行的情况下,可以获得xml。
是否有针对这类问题的任何属性?
发布于 2019-02-26 14:04:45
你带着订单属性去了。
将ints标记为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应该能够处理这个问题。
https://stackoverflow.com/questions/54885976
复制相似问题