Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам, всё собранное уйдет либо на оплату сервера, либо модераторам на шоколадки

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 05.03.2019, 16:18   #1
Ирина Лазарева
Новичок
 
Регистрация: 05.03.2019
Сообщений: 1
Репутация: 10
Восклицание Как исправить ошибку : В документе XML (0, 0) присутствует ошибка." ( корневой каталог)?

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


Код:

class Globals
{
public static string SettingsFile = "settings.xml";
}

Класс SettingsDemo
Код:

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();
} //поток закрывается
} }

И класс формы:
Код:

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.DirectoryNotFoundExceptio n: "Не удалось найти часть пути

Это какой-то капец, зависла на этой задаче)
P.S. Все необходимые библиотеки подключены
Про WPF знаю, решила использовать Win Forms

_____
Код программы нужно выделять (форматировать) тегами [CODE][/CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 05.03.2019 в 16:30.
Ирина Лазарева вне форума   Ответить с цитированием
Старый 05.03.2019, 16:35   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,128
Репутация: 2428
По умолчанию

Мда. Это круто при ошибке в XML предъявить все, кроме XML....
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что такое корневой каталог сайта? Vikty Свободное общение 2 15.07.2015 19:10
Помогите исправить программу(условие, мой код, все присутствует!) djon_limit Общие вопросы C/C++ 1 29.10.2009 20:34
При переключении между чекбоксами - ошибка Stack overflow. Как исправить эту ошибку? SkAndrew Общие вопросы Delphi 5 26.08.2008 21:32
корневой каталог windows vicvtor Win Api 4 22.07.2008 23:58
Как обозначается корневой каталог программы? BeeX Свободное общение 1 25.11.2007 21:25


22:15.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru