XML 上的讨厌对象序列化

Nasty Object on XML Serialize

嘿,我正在尝试从 xml 响应中反序列化一个讨厌的对象,一切正常我的数组列表返回正常,但里面的所有对象都是 null.I 将 post带有注释的 类 和 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>

错误The erros

我认为你这里有一些问题。首先,您在 XML 中获得了 CDATA,这将被解释为文本,而不是 XML,因此您需要删除 CDATA 标签或将 dados class 设置为包含文本并提取文本,然后直接从中构建 xml。

理顺之后,dados里面的信息看起来并不是什么数组。您应该能够将这些 positionData 属性直接添加到 dados class。如果您希望它们在单独的 class 中,您的 xml 必须看起来像

<dados>
 <positionData>
  <placa></placa>
  ...
  <Latitude></Latitude>
 </positionData>
</dados>

此外,如果您这样做,您需要将 xmlroot 和可序列化属性添加到 positiondata 的 class 定义中,并将 xmlarrayitem 属性添加到 dados 上的 positiondata 成员中.

问题修复,答案很简单,只需将对象的注释更改为[XmlElement("NameOfProprietiesOnXML")]