Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2019, 15:18   #1
Ирина Лазарева
Новичок
Джуниор
 
Регистрация: 05.03.2019
Сообщений: 1
Восклицание Как исправить ошибку : В документе 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 в 15:30.
Ирина Лазарева вне форума Ответить с цитированием
Старый 05.03.2019, 15:35   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Мда. Это круто при ошибке в XML предъявить все, кроме XML....
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что такое корневой каталог сайта? Vikty Свободное общение 2 15.07.2015 18:10
Помогите исправить программу(условие, мой код, все присутствует!) djon_limit Общие вопросы C/C++ 1 29.10.2009 19: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 20:25