将XML转换为通用列表

我正在尝试将XML转换为List

  2 dummy 
12
3 dummy
11

我尝试使用LINQ做了一些事情,并且在进行中并不是那么清楚。

 dox.Descendants("Student").Select(d=>d.Value).ToList(); 

我得到计数​​2,但值就像2dummy12 3dummy11

是否可以将上述XML转换为具有Id,Name和Section Properties的Student类型的通用List?

我可以实现这个的最佳方法是什么?

您可以创建匿名类型

 var studentLst=dox.Descendants("Student").Select(d=> new{ id=d.Element("Id").Value, Name=d.Element("Name").Value, Section=d.Element("Section").Value }).ToList(); 

这将创建一个匿名类型列表..


如果要创建学生类型列表

 class Student{public int id;public string name,string section} List studentLst=dox.Descendants("Student").Select(d=> new Student{ id=d.Element("Id").Value, name=d.Element("Name").Value, section=d.Element("Section").Value }).ToList(); 

我看到你已经接受了答案。 但我只想展示另一种我喜欢的方式。 首先,您将需要如下课程:

 public class Student { [XmlElement("Id")] public int StudentID { get; set; } [XmlElement("Name")] public string StudentName { get; set; } [XmlElement("Section")] public int Section { get; set; } } [XmlRoot("School")] public class School { [XmlElement("Student", typeof(Student))] public List StudentList { get; set; } } 

然后你可以反序列化这个xml:

 string path = //path to xml file using (StreamReader reader = new StreamReader(path)) { XmlSerializer serializer = new XmlSerializer(typeof(School)); School school = (School)serializer.Deserialize(reader); } 

希望它会有所帮助。

 var students = from student in dox.Descendants("Student") select new { id=d.Element("Id").Value, Name=d.Element("Name").Value, Section=d.Element("Section").Value }).ToList(); 

或者您可以创建一个类ID,名称和部分作为属性的类调用学生,并执行:

 var students = from student in dox.Descendants("Student") select new Student { id=d.Element("Id").Value, Name=d.Element("Name").Value, Section=d.Element("Section").Value }).ToList();