.NET 4.x Linq to XML парсинг - C#

Узнай цену своей работы

Формулировка задачи:

Доброе утро, подскажите пожалуйста по Linq:

Есть файл XML:

Листинг программы
  1. <?xml version="1.0" encoding="Windows-1251"?>
  2. <СтудентИнфо>
  3. <Инфо>
  4. <Экзамен Допуск="Да">
  5. <ИД>1</ИД>
  6. <ФИО>
  7. <Фамилия>Петров</Фамилия>
  8. <Имя>Николай</Имя>
  9. <Отчество>Васильевич</Отчество>
  10. </ФИО>
  11. <ДатаРождения>15.06.1996</ДатаРождения>
  12. <Дисциплина>
  13. <Аудитория>245</Аудитория>
  14. <ДатаЗанятия>25.12.2017</ДатаЗанятия>
  15. </Дисциплина>
  16. <Дисциплина>
  17. <Аудитория>244</Аудитория>
  18. <ДатаЗанятия>09.12.2017</ДатаЗанятия>
  19. </Дисциплина>
  20. </Экзамен>
  21. </Инфо>
  22. </СтудентИнфо>

Делаю обход запросом:

Листинг программы
  1. Student.Studentlist = (from stu in xstu.Element("СтудентИнфо").Element("Инфо").Elements("Экзамен")
  2. select new Student()
  3. {
  4. ID = Convert.ToInt16( stu.Element("ИД").Value),
  5. FName = stu.Element("ФИО").Element("Фамилия").Value,
  6. LName = stu.Element("ФИО").Element("Имя").Value,
  7. MName = stu.Element("ФИО").Element("Отчество").Value,
  8. Dob = stu.Element("ДатаРождения").Value,
  9. NumRoom = stu.Element("Дисциплина").Element("Аудитория").Value,
  10. }).ToList<Student>();
  11.  
  12. foreach (var item in Student.Studentlist)
  13. Console.WriteLine("{0} {1} {2} {3} {4} {5}", item.ID,
  14. item.FName, item.LName, item.MName, item.Dob, item.NumRoom);

Модель:

Листинг программы
  1. public class Student
  2. {
  3. public int ID { get; set; }
  4. public string FName { get; set; }
  5. public string LName { get; set; }
  6. public string MName { get; set; }
  7. public string Dob { get; set; }
  8. public string NumRoom { get; set; }
  9. }
  10. public class StudentInfo
  11. {
  12. public List<Client> Studentlist { get; set; }
  13. public StudentInfo()
  14. {
  15. Studentlist = new List<Student>();
  16. }
  17. }

Выводится только одна дисциплина

Листинг программы
  1. <Дисциплина>
  2. <Аудитория>245</Аудитория>
  3. <ДатаЗанятия>25.12.2017</ДатаЗанятия>
  4. </Дисциплина>

Делаю запрос:

Листинг программы
  1. Student.Studentlist = (from stu in xstu.Descendants("Дисциплина")
  2. select new Student()
  3. {
  4. NumRoom = stu.Value,
  5. }).ToList<Student>();
  6. foreach (var item in Student.Studentlist)
  7. Console.WriteLine("{0}", item.NumRoom);

Выводятся две дисциплины

.

Вопрос:

1.Как вывести все элементы данного XML в одном запросе и добавить их в список? 2.Если не получится, то как связать дисциплины со студентами по ИД?
public List<Client> Studentlist { get; set; }
Опечатка не List<Client> а List<Student>

Решение задачи: «.NET 4.x Linq to XML парсинг»

textual
Листинг программы
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <data>
  3.   <students>
  4.     <student>
  5.       <id>1</id>
  6.       <firstName>Николай</firstName>
  7.       <middleName>Юрьевич</middleName>
  8.       <lastName>Петров</lastName>
  9.       <birthDate>1996-06-15</birthDate>
  10.     </student>
  11.     <student>
  12.       <id>2</id>
  13.       <firstName>Иван</firstName>
  14.       <middleName>Иванович</middleName>
  15.       <lastName>Иванов</lastName>
  16.       <birthDate>1956-01-13</birthDate>
  17.     </student>
  18.   </students>
  19.   <disciplines>
  20.     <discipline>
  21.       <id>1</id>
  22.       <auditorium>245</auditorium>
  23.       <date>2017-12-25</date>
  24.     </discipline>
  25.     <discipline>
  26.       <id>2</id>
  27.       <auditorium>244</auditorium>
  28.       <date>2017-12-09</date>
  29.     </discipline>
  30.   </disciplines>
  31.   <attendances>
  32.     <attendance>
  33.       <studentId>1</studentId>
  34.       <disciplineId>1</disciplineId>
  35.     </attendance>
  36.     <attendance>
  37.       <studentId>2</studentId>
  38.       <disciplineId>2</disciplineId>
  39.     </attendance>
  40.   </attendances>
  41. </data>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы