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

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

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

Всем доброго времени суток. Подскажите пожалуйста, почему при добавлении дочернего элемента в несколько соседних элементов, он добавляется только в один из них. Вот XML документ:
<?xml version="1.0" encoding="utf-8"?>
<school>
  <class name="11a">
    <teacher name="Иванов" lesson="Физика" />
    <teacher name="Панюшкина" lesson="Русский" />
  </class>
  <class name="11б">
    <teacher name="Родительский" lesson="Физика" />
    <teacher name="Егорова" lesson="Русский" />
  </class>
  <class name="11в">
    <teacher name="Cеменова" lesson="Литература" />
    <teacher name="Хованский" lesson="Физика" />
  </class>
</school>
А вот код:
class Program
    {
        static void Main(string[] args)
        {
//обращаюсь к своему XML-документу
            XmlDocument document = new XmlDocument();
            document.Load(@"C:\Examples\Example.xml");
            XmlElement root = document.DocumentElement;
//получаю коллекцию узлов class
            XmlNodeList school = root.SelectNodes("*");
//создаю новый элемент teacher, чтобы его в дальнейшем добавить во все class 
            XmlElement newTeacher = document.CreateElement("teacher");
//создаю для него атрибуты
            XmlAttribute newName = document.CreateAttribute("name");
            XmlAttribute newLesson = document.CreateAttribute("lesson");
//создаю значения для атрибутов
            XmlText name = document.CreateTextNode("Внуков");
            XmlText lesson = document.CreateTextNode("Физкультура");
//присваиваю атрибуты элементу, текст атрибутам: 
            newTeacher.Attributes.Append(newName);
            newTeacher.Attributes.Append(newLesson);
            newName.AppendChild(name);
            newLesson.AppendChild(lesson);
// а теперь добавляю полученный элемент во все элементы class
            foreach (XmlNode n in school)
            { n.AppendChild(newTeacher); }
//сохраняю
            document.Save(@"C:\Examples\Example.xml");
             Console.WriteLine("Учитель добавлен!");
            Console.ReadKey();
        }
    }
После чего XML-документ становится таким:
<?xml version="1.0" encoding="utf-8"?>
<school>
  <class name="11a">
    <teacher name="Иванов" lesson="Физика" />
    <teacher name="Панюшкина" lesson="Русский" />
  </class>
  <class name="11б">
    <teacher name="Родительский" lesson="Физика" />
    <teacher name="Егорова" lesson="Русский" />
  </class>
  <class name="11в">
    <teacher name="Cеменова" lesson="Литература" />
    <teacher name="Хованский" lesson="Физика" />
    <teacher name="Внуков" lesson="Физкультура" />
  </class>
</school>
Почему он добавляет только в последний элемент, а не во все??

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

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

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


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

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

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