Форум программистов, компьютерный форум, киберфорум
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. Показов 16069. Ответов 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
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
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru