XML序列化讨厌的对象
嘿,我想从一个xml响应反序列化一个讨厌的对象,所有工作正常我的数组列表返回正常,但里面的所有对象是null.I将张贴一个类与注释和XML ,但是如果我改变一个注解,反序列化不起作用。XML序列化讨厌的对象
[Serializable, XmlRoot(ElementName = "DocumentElement", Namespace = "")]
public class dados {
[XmlElement(ElementName = "dados", Namespace = "")]
public positionData[] Position ;
}
public class positionData {
[XmlText]
public string Placa { get; set; }
[XmlAttribute("Latitude")]
public double Latitude { get; set; }
[XmlAttribute("Longitude")]
public double Longitude { get; set; }
[XmlAttribute("dataini")]
public DateTime dataini { get; set; }
[XmlAttribute("datafim")]
public DateTime datafim { get; set; }
[XmlAttribute("tipo")]
public string tipo { get; set; }
[XmlAttribute("idpontoreferencia")]
public long idpontoreferencia { get; set; }
[XmlAttribute("nome")]
public string nome { get; set; }
[XmlAttribute("Data")]
public DateTime Data { get; set; }
}
的XML
<DocumentElement xmlns="">
<dados>
<![CDATA[<Placa>LLV6386 </Placa><Latitude>-22,91572</Latitude><Longitude>-43,09471</Longitude><dataini>15/08/2017 11:12:35</dataini><datafim></datafim><tipo>P</tipo><idpontoreferencia>76749</idpontoreferencia><nome></nome><Data>15/08/2017 11:12:36</Data>]]>
</dados>
问题修复时,答案很简单,只是改变对象以[XmlElement的(“NameOfProprietiesOnXML”)]
我觉得你有一些问题在这里。首先你在你的XML中获得CDATA,这将被解释为文本而不是XML,所以你需要删除CDATA标签或者设置dados类以包含文本&提取文本然后构建出XML直接从它。
一旦你理清了,它看起来并不像dados中的信息实际上是任何类型的数组。您应该能够将这些positionData属性直接添加到dados类中。如果你想让他们在一个单独的类的XML将不得不看起来像
<dados>
<positionData>
<placa></placa>
...
<Latitude></Latitude>
</positionData>
</dados>
此外,如果你这样做,你会希望添加的xmlroot和序列化的属性,以positiondata的类定义还有xmlarrayitem属性在dados上定位数据成员。
Tankyou用于快速响应,但是如果我添加了该注释,该对象将变为null =/ –
发布您要反序列化的xml。如果某些内容为空,通常是映射问题 –
Yap我有空值的数据,我该如何解决这个问题?参见XML ... –
的注释的任何错误。只有空数据值。这些属性不是属性,那么为什么要用XmlAttribute标注属性? – jdweng
只需将XmlAttribute更改为XmlElement并且不会出现更多错误即使为空值 –