2013-04-02 34 views
0

我有下面的XML結構單個節點XML反序列化後返回

<root> 
<title>List</title> 
<units>Total Units: 79.0</units> 
<sesgrps> 
    <sesgrp> 
    <classes> 
     <class> 
     <subj_area_name>C# language</subj_area_name> 
     <class_name>C# Class</class_name> 
     </class> 
     <class> 
     <subj_area_name>VB language</subj_area_name> 
     <class_name>VB Class</class_name> 
     </class> 
     <class> 
     <subj_area_name>F# language</subj_area_name> 
     <class_name>F# Class</class_name> 
     </class> 
    </classes> 
    </sesgrp> 
</sesgrps> 

對於我所創建的類如下:

[Serializable] 
[XmlRoot("root")] 
public class Data 
{ 
    [XmlElement("title")] 
    public string Title { get; set; } 

    [XmlElement("units")] 
    public string Units { get; set; } 

    [XmlArray("sesgrps")] 
    [XmlArrayItem("sesgrp")] 
    public List<SessionGroup> SessionGroups { get; set; } 
} 

[Serializable] 
public class SessionGroup 
{ 
    [XmlArray("classes")] 
    [XmlArrayItem("class")] 
    public List<Class> Classes { get; set; } 
} 

[Serializable] 
public class Class 
{ 
    ..................... 
    ..................... 
} 

當我反序列化 ,我只有getti ng類的項目,而不是類別集合中的3個項目

回答

0

我只是試着下面的代碼:

var file = new FileStream("Input.txt", FileMode.Open); 

var serializer = new XmlSerializer(typeof(Data)); 
var item = (Data)serializer.Deserialize(file); 

與輸入XML數據和以下Class類聲明:

[Serializable] 
public class Class 
{ 
    [XmlElement("subj_area_name")] 
    public string Area { get; set; } 

    [XmlElement("class_name")] 
    public string Name { get; set; } 
} 

,一切都很好。結果項目有1 SessionGroup例如withing SessionGroups屬性,它包含內Classes財產3個Class對象:

enter image description here

所以我不得不說 - XmlSerializer或類聲明是不是這裏有問題。

+0

謝謝......我在「Class」類中的節點出現了一些問題,因爲只有第一個節點即將到來。 xml結構和對象結構不匹配。再次感謝。 –