Вставка данных в XML-документ - C#
Формулировка задачи:
Всем доброго времени суток. Подскажите пожалуйста, почему при добавлении дочернего элемента в несколько соседних элементов, он добавляется только в один из них.
Вот XML документ:
А вот код:
После чего 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 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);