2017-08-15 104 views
-1

嘿,我想從一個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並且不會出現更多錯誤即使爲空值 –

回答

0

問題修復時,答案很簡單,只是改變對象以[XmlElement的(「NameOfProprietiesOnXML」)]

0

我覺得你有一些問題在這裏。首先你在你的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 ... –