C#XML序列化 - 浮点或空元素

时间:2015-05-11 07:30:33

标签: c# xml-serialization

我有商店列表的xml。每个商店都有节点。在其中一些中,这是浮点数,在某些中它是空节点。所以它看起来像这样:

<shops>
  <shop>
    <lat>123.123</lat>
    <lon>123.123</lon>
  </shop>
  <shop>
    <lat null="true"/>
    <lon null="true"/>
</shop>
</shops>

我的类反序列化这个xml就像那样

[XmlRoot("shops")]
public class ShopList
{
    [XmlElement("shop")]
    public Shop[] ShopArray { get; set; }

    public class Shop
    {
        [XmlElement("lat", IsNullable = true)]
        public float? Latitude { get; set; }

        [XmlElement(ElementName="lon", IsNullable=true)]
        public float? Longitude { get; set; }
    }
 }

但是当我反序列化xml时,我得到了错误。你有任何线索吗?

2 个答案:

答案 0 :(得分:0)

public bool DataSpecified 
{ 
   get { return !String.IsNullOrEmpty(Data); }
   set { return; } //The serializer requires a setter
}

您应该尝试something like this

答案 1 :(得分:-1)

我认为您的元素中不应包含null="true",而应该xsi:nil="true"

<shops>
  <shop>
    <lat>123.123</lat>
    <lon>123.123</lon>
  </shop>
  <shop>
    <lat xsi:nil="true"/>
    <lon xsi:nil="true"/>
  </shop>
</shops>