С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/89: Рейтинг темы: голосов - 89, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 15
1
.NET 4.x

Как исправить ошибку : В документе XML (0, 0) присутствует ошибка." ( корневой каталог)?

05.03.2019, 13:31. Показов 16246. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как исправить ошибку В документе XML (0, 0) присутствует ошибка." (XmlException: Отсутствует корневой элемент)?
Здравствуйте! Прошу помощи впервые (на форуме). Банальное погугливание не всегда приводит к успеху( Возможно, я не умею правильно этим воспользоваться..
В общем в своём проекте, хочу чтобы сохранялись настройки при выходе из программы, сейчас для теста (проект Save) хочу заполнить поля: имя, фамилия, отчество, при нажатии кнопки "сохранить" : Ошибка System.InvalidOperationException: "В документе XML (0, 0) присутствует ошибка." (XmlException: Отсутствует корневой элемент)?
Класс, где хранится статическая переменная , позволяющая найти файл в проекте Save:

C#
1
2
3
4
class Globals
{
public static string SettingsFile = "settings.xml";
}
Класс SettingsDemo

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
public class SettingsDemo
{
public string Name { get; set; }
public string Familyname { get; set; }
public string Secondname { get; set; }
 
//получение настроек из файла ( Десериализация)------------------------------------------------------------------------------
//реализуем статический метод, который возвращает объект типа SettingsDemo
public static SettingsDemo GetSettings()
{
//создаём локальную переменную Settings, в которую будут сохранятся настройки при обработке 
//и локал. переменную, которая filename, хранящая путь к настройкам
SettingsDemo settings = null;
string filename = Globals.SettingsFile;
 
//если файл существует обращаемся с помощью потока fs
if (File.Exists(filename))
{
//для гарантии закрытия потока исполузем using
using (FileStream fs = new FileStream(filename, FileMode.Open))
{
 
 
XmlSerializer xser = new XmlSerializer(typeof(SettingsDemo));
//вызов метода Deserialize, в который передаём сам поток обращения к файлу
//метод возратит объект типа object, который нужно преобразовать в SettingDemo
//чтобы сохранить результат обработки в локальную переменную SettngsDemo
settings = (SettingsDemo)xser.Deserialize(fs);
//закрываем поток
fs.Close();
}
}
//если файла нет
else settings = new SettingsDemo();
return settings;
 
}
 
//------------------------------------------------------------------------------
//сохранение настроек(Сериализация)--------------------------------------------------------------------------------
public void Save() 
{
string filename = Globals.SettingsFile; //создаём локальную переменную
//существует ли файл my_file.xml
//если да, нужно его удалить, чтобы сохранить новые настройки
//с помощью метода Exists, Delete - удалить
 
if (File.Exists(filename)) File.Delete(filename);
 
//обратимся к файлу настроек, с помощью метода 
 
//укажим путь к файлу и режим доступа
using (FileStream fs = new FileStream(filename, FileMode.Create))
{
 
// XmlSerializer удобный класс для работы с XML. Он позволяет преобразовывать
//классы С# в XML файлы
//создаём объект xser XmlSerializer. В конструкторе указываем тип класса typeof
XmlSerializer xser = new XmlSerializer(typeof(SettingsDemo)); //?????
//таким образом, объект xser будет сохранять объекты типа SettingsDemo(наш класс) в xml файлы
 
//реализует данные объекта типа SettingsDemo
//передаём поток, в котором сохраняются настройки и передаём объект класса. после чего поток можно закрыть
xser.Serialize(fs, this);
fs.Close();
} //поток закрывается
} }
И класс формы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public partial class Form1 : Form
{
 
 
//создадим локальную переменную, которая хранит настройки
 
SettingsDemo _SettingsDemo = null;
 
public Form1()
{
InitializeComponent();
 
//при инициализации формы будет присваиваться значение переменной _SettingsDemo
//путем вызова статического метода GetSettings
 
_SettingsDemo = SettingsDemo.GetSettings();
//после обновляем значение в контролах
//метод _initControls
_initControlls();
}
 
private void _initControlls()
{
textBox1Familiy.Text = _SettingsDemo.Familyname;
textBox1Name.Text = _SettingsDemo.Name;
textBox2Secondname.Text = _SettingsDemo.Secondname;
}
private void Form1_Load(object sender, EventArgs e)
{ 
}
private void button1SaveSettings_Click(object sender, EventArgs e)
{
 
_SettingsDemo.Familyname = textBox1Familiy.Text;
_SettingsDemo.Name = textBox1Name.Text;
_SettingsDemo.Secondname = textBox2Secondname.Text;
 
//сохранит данные из объекта SettingsDemo в XML файл
_SettingsDemo.Save();
}
}
В классе Globals пробовала указывать полностью путь к каталогу, пробовала прописать чисто название файла - не помогло. пишет другую ошибку вроде этой: System.IO.DirectoryNotFoundException: "Не удалось найти часть пути

Это какой-то капец, зависла на этой задаче)
P.S. Все необходимые библиотеки подключены
Про WPF знаю, решила использовать Win Forms
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.03.2019, 13:31
Ответы с готовыми решениями:

В документе XML отсутствует корневой каталог
При сериализации и десериализации , возникакет ошибка: "System.InvalidOperationException: В...

Xml-сериализация при подключении к серверу более одного клиента (в документе xml (0 0) присутствует ошибка)
Здравствуйте, практикую сетевое программирование, решил написать многопоточный проект...

В документе xml (2 2) присутствует ошибка
Добрый день кто сможет подсказать, с помощью спец вставки получил ...

В документе XML (2, 2) присутствует ошибка
Пытаюсь десериализовать, но здесь: profiles =...

22
228 / 165 / 110
Регистрация: 09.11.2015
Сообщений: 454
05.03.2019, 13:38 2
Ирина Лазарева, xml файл не пустой случайно? Покажите, как выглядит
0
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 15
05.03.2019, 13:49  [ТС] 3
Я сейчас не у компа. Да пустой..
0
228 / 165 / 110
Регистрация: 09.11.2015
Сообщений: 454
05.03.2019, 13:52 4
Цитата Сообщение от Ирина Лазарева Посмотреть сообщение
Да пустой..
тогда и десериализовывать нечего.
Уберите из конструктора формы все, кроме InitializeComponent();. Заполните необходимые текстбоксы, сохраните настройки и уже потом можно будет загружать
0
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 15
05.03.2019, 14:17  [ТС] 5
Туплю.. а что в текстбокс прописать в файле xml? Я же ввожу эти данные с формы
0
228 / 165 / 110
Регистрация: 09.11.2015
Сообщений: 454
05.03.2019, 19:46 6
Ирина Лазарева, запишите для начала хоть что-нибудь, чтобы у Вас была возможность загружать xml при запуске приложения
0
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 15
05.03.2019, 20:44  [ТС] 7
Хорошо, попробую
0
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 15
06.03.2019, 11:50  [ТС] 8
сделала, при нажатии кнопки сохранить ничего не просиходит
0
228 / 165 / 110
Регистрация: 09.11.2015
Сообщений: 454
06.03.2019, 20:50 9
Ирина Лазарева, прикрепите проект, посмотрим...
0
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 15
08.03.2019, 19:44  [ТС] 10
Здравствуйте, прикрепляю проект. Какой то круговорот.. снова пишет ту ошибку , что и на форуме писала.. Не сохраняет линии...Думала сама сделаю(
Вложения
Тип файла: rar SCRUM-BOARD.rar (3.93 Мб, 7 просмотров)
0
13 / 11 / 2
Регистрация: 07.03.2019
Сообщений: 29
08.03.2019, 20:16 11
Если файл пустой, то достаточно просто его удалить, чтобы заработало, насколько я понял логику программы.
1
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 15
08.03.2019, 20:47  [ТС] 12
Нет, в xml файле (как я поняла) нужно структуру прописать.. чтобы хранить координаты линий..если удалить файл то куда сохранять? Я для этого и создала Xml - файл 0_0 Или я вас не так поняла?
0
13 / 11 / 2
Регистрация: 07.03.2019
Сообщений: 29
08.03.2019, 20:49 13
Если файла нет, то ошибки не будет, создадутся настройки по-умолчанию. При сохранении они нормально запишутся в файл.
А вот если файл есть и он пустой, то как раз и будет такая ошибка.
0
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 15
08.03.2019, 21:39  [ТС] 14
Что вы имеете ввиду, удалить файл ? тогда на что будет ссылаться программа при сохранении???
0
228 / 165 / 110
Регистрация: 09.11.2015
Сообщений: 454
09.03.2019, 01:19 15
Ирина Лазарева, структура класса Settings отличается от того, что в первом посте, но не суть важно. На кнопку повесил сохранение вместо подключения к БД (для примера). При запуске программы происходит загрузка настроек с выводом информации в текстбокс (тоже для примера). Все в порядке.
Вложения
Тип файла: zip SCRUM-BOARD.ZIP (4.84 Мб, 4 просмотров)
0
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 15
09.03.2019, 01:43  [ТС] 16
секунду, посмотрю)

Добавлено через 5 минут
не могу запустить..даже через класс progamm
0
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 15
09.03.2019, 11:13  [ТС] 17
Запустила. Извините, а что Вы сделали?) По - прежнему аналогичная ошибка..
0
228 / 165 / 110
Регистрация: 09.11.2015
Сообщений: 454
09.03.2019, 16:38 18
Ирина Лазарева, на Form1 на кнопке button2 сериализация класса _SettingDemo в XML. В конструкторе этой же формы происходит десериализация

Добавлено через 2 минуты
Ирина Лазарева, методы сохранения и получения настроек класса _SettingsDemo полностью рабочие.
Методы вызываются на первой форме просто для примера, чтобы показать, что все работает
0
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 15
09.03.2019, 18:50  [ТС] 19
На форме 1 кнопка 2 это кнопка войти. Мне нужно сохранить нарисованные линии в форме2)) как не работало так и не работает , может что неправильно делаю
0
228 / 165 / 110
Регистрация: 09.11.2015
Сообщений: 454
10.03.2019, 00:08 20
Лучший ответ Сообщение было отмечено Ирина Лазарева как решение

Решение

Ирина Лазарева, Прикрепляю проект.
1. Подключение к БД закомментировал, чтобы было проще открыть Form2. Вернете назад
2. На Form2 кинул две кнопки. Одна для сохранения, вторая для загрузки (загруженные линии отобразятся, если стоит флажок в checkbox). Кнопки как пример. Логику через форму SaveExit, надеюсь, сами прикрутите
3. Сериализация бинарная, т.к. в данном случае реализация проще, чем Xml-сериализация

P.S. надеюсь, сейчас я понял, что Вам нужно
Вложения
Тип файла: zip SCRUM-BOARD-binary.ZIP (4.78 Мб, 15 просмотров)
0
10.03.2019, 00:08
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.03.2019, 00:08
Помогаю со студенческими работами здесь

Десериализация c#, в документе XML (13, 11) присутствует ошибка
В общем, пытаюсь реализовать механизм сериализации и десериализации. Сериализация успешно...

Visual studio 2013 в документе xml (8,2) присутствует ошибка
Добрый день. не могу понять что за ошибка происходит. создавал уже чистые тестовые проекты. при...

Deserialize - ошибка. в документе XML присутствует ошибка - странный глюк
Происходит ошибка в следующей функции: private void LoadSettingsFromFile() { ...

Выскакивает ошибка: В документе XML (1, 2) присутствует ошибка
Возникает ошибка здесь: object obj = mySerializer.Deserialize(ms); class Program { static...

System.InvalidOperationException: "В документе XML (4, 17) присутствует ошибка."
Доброго времени суток. Не могу никак разобраться с этим исключением....

Ошибка синтаксического анализа XML: корневой элемент не найден (как отловить источник ошибки)
Кто знает, как с клиентской стороны отловить источник ошибки, может быть все же не правильно...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru