.NET 4.x Linq to XML парсинг - C#
Формулировка задачи:
Доброе утро, подскажите пожалуйста по Linq:
Опечатка не List<Client> а List<Student>
Есть файл XML:
Листинг программы
- <?xml version="1.0" encoding="Windows-1251"?>
- <СтудентИнфо>
- <Инфо>
- <Экзамен Допуск="Да">
- <ИД>1</ИД>
- <ФИО>
- <Фамилия>Петров</Фамилия>
- <Имя>Николай</Имя>
- <Отчество>Васильевич</Отчество>
- </ФИО>
- <ДатаРождения>15.06.1996</ДатаРождения>
- <Дисциплина>
- <Аудитория>245</Аудитория>
- <ДатаЗанятия>25.12.2017</ДатаЗанятия>
- </Дисциплина>
- <Дисциплина>
- <Аудитория>244</Аудитория>
- <ДатаЗанятия>09.12.2017</ДатаЗанятия>
- </Дисциплина>
- </Экзамен>
- </Инфо>
- </СтудентИнфо>
Делаю обход запросом:
Листинг программы
- Student.Studentlist = (from stu in xstu.Element("СтудентИнфо").Element("Инфо").Elements("Экзамен")
- select new Student()
- {
- ID = Convert.ToInt16( stu.Element("ИД").Value),
- FName = stu.Element("ФИО").Element("Фамилия").Value,
- LName = stu.Element("ФИО").Element("Имя").Value,
- MName = stu.Element("ФИО").Element("Отчество").Value,
- Dob = stu.Element("ДатаРождения").Value,
- NumRoom = stu.Element("Дисциплина").Element("Аудитория").Value,
- }).ToList<Student>();
- foreach (var item in Student.Studentlist)
- Console.WriteLine("{0} {1} {2} {3} {4} {5}", item.ID,
- item.FName, item.LName, item.MName, item.Dob, item.NumRoom);
Модель:
Листинг программы
- public class Student
- {
- public int ID { get; set; }
- public string FName { get; set; }
- public string LName { get; set; }
- public string MName { get; set; }
- public string Dob { get; set; }
- public string NumRoom { get; set; }
- }
- public class StudentInfo
- {
- public List<Client> Studentlist { get; set; }
- public StudentInfo()
- {
- Studentlist = new List<Student>();
- }
- }
Выводится только одна дисциплина
Листинг программы
- <Дисциплина>
- <Аудитория>245</Аудитория>
- <ДатаЗанятия>25.12.2017</ДатаЗанятия>
- </Дисциплина>
Делаю запрос:
Листинг программы
- Student.Studentlist = (from stu in xstu.Descendants("Дисциплина")
- select new Student()
- {
- NumRoom = stu.Value,
- }).ToList<Student>();
- foreach (var item in Student.Studentlist)
- Console.WriteLine("{0}", item.NumRoom);
Выводятся две дисциплины
.Вопрос:
1.Как вывести все элементы данного XML в одном запросе и добавить их в список? 2.Если не получится, то как связать дисциплины со студентами по ИД?
public List<Client> Studentlist { get; set; }
Решение задачи: «.NET 4.x Linq to XML парсинг»
textual
Листинг программы
- <?xml version="1.0" encoding="utf-8"?>
- <data>
- <students>
- <student>
- <id>1</id>
- <firstName>Николай</firstName>
- <middleName>Юрьевич</middleName>
- <lastName>Петров</lastName>
- <birthDate>1996-06-15</birthDate>
- </student>
- <student>
- <id>2</id>
- <firstName>Иван</firstName>
- <middleName>Иванович</middleName>
- <lastName>Иванов</lastName>
- <birthDate>1956-01-13</birthDate>
- </student>
- </students>
- <disciplines>
- <discipline>
- <id>1</id>
- <auditorium>245</auditorium>
- <date>2017-12-25</date>
- </discipline>
- <discipline>
- <id>2</id>
- <auditorium>244</auditorium>
- <date>2017-12-09</date>
- </discipline>
- </disciplines>
- <attendances>
- <attendance>
- <studentId>1</studentId>
- <disciplineId>1</disciplineId>
- </attendance>
- <attendance>
- <studentId>2</studentId>
- <disciplineId>2</disciplineId>
- </attendance>
- </attendances>
- </data>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д