我有以下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
{
.....................
.....................
}
当我反序列化时,我只是在Classes集合中获取单个Class项而不是3个类。
答案 0 :(得分: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
实例,其中包含SessionGroups
属性,其中包含Class
属性中的3个Classes
个对象:
所以我不得不说 - XmlSerializer
或类声明在这里不是问题。