2013-04-02 31 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结构和对象结构不匹配。再次感谢。 –