С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 2
1

Ошибка при работе с XmlDocument

23.06.2017, 11:57. Показов 1821. Ответов 1

Author24 — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static XmlDocument doc = new XmlDocument();
doc.Load("XMLFile1.xml");
 
                XmlElement userElem = doc.CreateElement("user");
                XmlAttribute loginAttr = doc.CreateAttribute("login");
                XmlElement nameElem = doc.CreateElement("name");
                XmlElement passElem = doc.CreateElement("password");
                XmlText loginText = doc.CreateTextNode(login);
                XmlText nameText = doc.CreateTextNode(name);
                XmlText passwordText = doc.CreateTextNode(password);
 
                loginAttr.AppendChild(loginText);
                nameElem.AppendChild(nameText);
                passElem.AppendChild(passwordText);
                userElem.Attributes.Append(loginAttr);
                userElem.AppendChild(nameElem);
                userElem.AppendChild(passElem);
                doc.AppendChild(userElem); [QUOTE][COLOR="Red"]//В этом месте появляется ошибка.[/COLOR] System.InvalidOperationException: "Этот документ уже имеет узел "DocumentElement"."[/QUOTE]
                doc.Save("XMLFile1.xml");

вот сам документ
C#
1
2
3
<?xml version="1.0" encoding="utf-8" ?>
<Root>
</Root>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.06.2017, 11:57
Ответы с готовыми решениями:

Node not found при работе с XMLDocument
Доброго всем времени суток! Есть Такого рода момент: создаю xml документ и программно заполняю...

Изменить табуляцию при работе с классом XmlDocument перед сохранением файла
Работаю с XML по средствам класса XmlDocument, после того как документ создан, сохраняю его в файл...

Аппаратная ошибка видео (Ошибка при работе с видеоустройствами привела к некорректной работе Windows).
Аппаратная ошибка видео. Последнее время во время игры Call of Duty: Modern Warfare 2 в...

Редактирование XMLDocument через XmlNode. Ошибка при компиляции
XmlDocument xml_temp = new XmlDocument(); ... Функция добавляет по клику значение в выбранный в...

1
Администратор
Эксперт .NET
17709 / 13836 / 5313
Регистрация: 17.03.2014
Сообщений: 28,343
Записей в блоге: 1
23.06.2017, 13:43 2
Zezus, строка
C#
18
doc.AppendChild(userElem);
означает добавление нового узла в качестве корневого элемента. В твоем документе уже есть корневой элемент. По правилам XML корневой элемент может быть только один о чем и сообщает исключение. Если нужно добавить новый элемент внутрь Root, то сделай так:
C#
18
doc.DocumentElement.AppendChild(userElem);
Если нужно чтобы user был корневым элементом, то сделай так:
C#
18
doc.ReplaceChild(userElem, doc.DocumentElement);
С последним вариантом нужно быть осторожным т.к. он целиком заменит все содержимое старого корневого элемента.

Код создания XML, кстати, можно упростить:
C#
1
2
3
4
5
6
7
8
9
10
11
12
static XmlDocument doc = new XmlDocument();
doc.Load("XMLFile1.xml");
 
XmlElement userElem = doc.CreateElement("user"); userElem.SetAttribute("login", login);
XmlElement nameElem = doc.CreateElement("name"); nameElem.InnerText = name;
XmlElement passElem = doc.CreateElement("password"); passElem.InnerText = password;
 
userElem.AppendChild(nameElem);
userElem.AppendChild(passElem);
doc.DocumentElement.AppendChild(userElem);
 
doc.Save("XMLFile1.xml");
Дальнейшее упрошение возможно путем применения LINQ to XML.
C#
1
2
3
4
5
6
7
XDocument xdoc = XDocument.Load("XMLFile1.xml");
xdoc.Root.Add(
    new XElement("user", new XAttribute("login", login),
        new XElement("name", name),
        new XElement("password", password)
));
xdoc.Save("XMLFile1.xml");
0
23.06.2017, 13:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2017, 13:43
Помогаю со студенческими работами здесь

Ошибка при сохранении xmlDocument в Stream и получение из Stream буфер
Здравствуйте. подскажите пожалуйста в чем проблема. в файл сохраняется отлично, а вот буфер...

Ошибка при использовании ADODB.CONNECTION при работе с dbf-файлом
Добрый день! Написала макрос с использованием adodb.connection. макрос удаляет строки из файла dbf....

Логическая ошибка при выполнении простой модели при работе с очередями с использованием приоритетов
Здравствуйте уважаемые форумчане! работаю в Anylogic 7.0. При построении простой системы массового...

Не является внутренней или внешней командой - ошибка не при компиляции а при работе программы
В VS скомпилировал код #include &lt;iostream&gt; using namespace std; int main() { int a;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru