反序列化相对路径 XML
Deserializing relative path XML
在 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 行称为 "Proximity"。这些字段与上面的字段一致。
如果所有字段都是必填的,那没问题,代码如下所示:
[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个proximity fields和之前的fields是紧紧绑定在一起的,每一对fields都不是必填的。例如。你可以得到 xml 缺少前两行的地方。
是否有针对此类问题的属性?
您正在处理订单属性。
将 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 应该可以处理这个问题。
在 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 行称为 "Proximity"。这些字段与上面的字段一致。
如果所有字段都是必填的,那没问题,代码如下所示:
[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个proximity fields和之前的fields是紧紧绑定在一起的,每一对fields都不是必填的。例如。你可以得到 xml 缺少前两行的地方。
是否有针对此类问题的属性?
您正在处理订单属性。
将 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 应该可以处理这个问题。