嘿,我正在尝试从xml响应中反序列化一个讨厌的对象,一切正常我的数组列表返回正常,但是里面的所有对象都是null。我将发布带注释和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>
答案 0 :(得分:0)
我认为你在这里遇到了一些问题。首先,您在XML中获得CDATA,这将被解释为文本而不是XML,因此您需要删除CDATA标记或将dados类设置为仅包含text&amp;提取文本然后直接从中构建xml。
一旦你理顺了,看起来爸爸里面的信息实际上并不是任何形式的数组。您应该只能将这些positionData属性直接添加到dados类。如果你想要它们在一个单独的类中,你的xml必须看起来像
<dados>
<positionData>
<placa></placa>
...
<Latitude></Latitude>
</positionData>
</dados>
另外,如果你这样做,你需要将xmlroot和serializable属性添加到positiondata的类定义以及将xmlarrayitem属性添加到dados上的positiondata成员。
答案 1 :(得分:0)
问题修复,答案很简单,只需将对象的注释更改为[XmlElement(&#34; NameOfProprietiesOnXML&#34;)]