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> 

错误The erros

+0

的注释的任何错误。只有空数据值。这些属性不是属性,那么为什么要用XmlAttribute标注属性? – jdweng

+0

只需将XmlAttribute更改为XmlElement并且不会出现更多错误即使为空值 –

问题修复时,答案很简单,只是改变对象以[XmlElement的(“NameOfProprietiesOnXML”)]

我觉得你有一些问题在这里。首先你在你的XML中获得CDATA,这将被解释为文本而不是XML,所以你需要删除CDATA标签或者设置dados类以包含文本&提取文本然后构建出XML直接从它。

一旦你理清了,它看起来并不像dados中的信息实际上是任何类型的数组。您应该能够将这些positionData属性直接添加到dados类中。如果你想让他们在一个单独的类的XML将不得不看起来像

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

此外,如果你这样做,你会希望添加的xmlroot和序列化的属性,以positiondata的类定义还有xmlarrayitem属性在dados上定位数据成员。

+0

Tankyou用于快速响应,但是如果我添加了该注释,该对象将变为null =/ –

+0

发布您要反序列化的xml。如果某些内容为空,通常是映射问题 –

+0

Yap我有空值的数据,我该如何解决这个问题?参见XML ... –