Вставка данных в XML-документ - C#

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

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

Всем доброго времени суток. Подскажите пожалуйста, почему при добавлении дочернего элемента в несколько соседних элементов, он добавляется только в один из них. Вот XML документ:
Листинг программы
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <school>
  3. <class name="11a">
  4. <teacher name="Иванов" lesson="Физика" />
  5. <teacher name="Панюшкина" lesson="Русский" />
  6. </class>
  7. <class name="11б">
  8. <teacher name="Родительский" lesson="Физика" />
  9. <teacher name="Егорова" lesson="Русский" />
  10. </class>
  11. <class name="11в">
  12. <teacher name="Cеменова" lesson="Литература" />
  13. <teacher name="Хованский" lesson="Физика" />
  14. </class>
  15. </school>
А вот код:
Листинг программы
  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. //обращаюсь к своему XML-документу
  6. XmlDocument document = new XmlDocument();
  7. document.Load(@"C:\Examples\Example.xml");
  8. XmlElement root = document.DocumentElement;
  9. //получаю коллекцию узлов class
  10. XmlNodeList school = root.SelectNodes("*");
  11. //создаю новый элемент teacher, чтобы его в дальнейшем добавить во все class
  12. XmlElement newTeacher = document.CreateElement("teacher");
  13. //создаю для него атрибуты
  14. XmlAttribute newName = document.CreateAttribute("name");
  15. XmlAttribute newLesson = document.CreateAttribute("lesson");
  16. //создаю значения для атрибутов
  17. XmlText name = document.CreateTextNode("Внуков");
  18. XmlText lesson = document.CreateTextNode("Физкультура");
  19. //присваиваю атрибуты элементу, текст атрибутам:
  20. newTeacher.Attributes.Append(newName);
  21. newTeacher.Attributes.Append(newLesson);
  22. newName.AppendChild(name);
  23. newLesson.AppendChild(lesson);
  24. // а теперь добавляю полученный элемент во все элементы class
  25. foreach (XmlNode n in school)
  26. { n.AppendChild(newTeacher); }
  27. //сохраняю
  28. document.Save(@"C:\Examples\Example.xml");
  29. Console.WriteLine("Учитель добавлен!");
  30. Console.ReadKey();
  31. }
  32. }
После чего XML-документ становится таким:
Листинг программы
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <school>
  3. <class name="11a">
  4. <teacher name="Иванов" lesson="Физика" />
  5. <teacher name="Панюшкина" lesson="Русский" />
  6. </class>
  7. <class name="11б">
  8. <teacher name="Родительский" lesson="Физика" />
  9. <teacher name="Егорова" lesson="Русский" />
  10. </class>
  11. <class name="11в">
  12. <teacher name="Cеменова" lesson="Литература" />
  13. <teacher name="Хованский" lesson="Физика" />
  14. <teacher name="Внуков" lesson="Физкультура" />
  15. </class>
  16. </school>
Почему он добавляет только в последний элемент, а не во все??

Решение задачи: «Вставка данных в XML-документ»

textual
Листинг программы
  1. n.AppendChild(newTeacher);

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


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

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

7   голосов , оценка 3.429 из 5

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

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

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