Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/26: Рейтинг темы: голосов - 26, средняя оценка - 4.54
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 86
1

Сохранение объектов класса в Xml файл

07.01.2015, 22:26. Просмотров 4971. Ответов 11
Метки нет (Все метки)

нужно сохранить значение классов в xml файл

описание одного из классов
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
class AnimalTip
    {
        private string _name_tip; //название типа
        private string _inform; //инфо о типе
        private string _habitat; //среда обитания
 
        public AnimalTip(string name_tip, string inform, string habitat)
        {
            _name_tip = name_tip;
            _inform = inform;
            _habitat = habitat;
        }
 
        public AnimalTip()
        {
        }
 
        public string Name_Tip
        {
            get { return _name_tip; }
            set { _name_tip = value; }
        }
 
        public string Inform
        {
            get { return _inform; }
            set { _inform = value; }
        }
 
        public string Habbitat
        {
            get { return _habitat; }
            set { _habitat = value; }
        }
 
        public virtual void saveFile(string path)
        {
            using (StreamWriter sw = File.AppendText(path))
            {
                sw.WriteLine("Тип животного:");
                sw.WriteLine(_name_tip);
                sw.WriteLine(_inform);
                sw.WriteLine(_habitat);
            }
        }
      }
заполнение этого класса

C#
1
2
tipAnimalList.Add(new AnimalTip("Хордовые", "Тип 4300 видов", "Вода, Суша"));
            tipAnimalList.Add(new AnimalTip("Членистоноогие", "Тип  взятых.", "Вода, Наземно-воздушная, Почва"));
код сохранения в xml файл

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void SaveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    FileStream stream = new FileStream(this.saveFileDialog1.FileName, FileMode.Create);
                    XmlSerializer serializer = new XmlSerializer(typeof(AnimalTip));
                    serializer.Serialize(stream, tipAnimalList);
                    stream.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString(), "Ошибка создания файла!");
                }
            }
        }
выдаёт следующую ошибку
Сохранение объектов класса в Xml файл


прошу помощи
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2015, 22:26
Ответы с готовыми решениями:

Сохранение списка объектов класса в ручную, сохранение в XML. Без сериализации.
Здравствуйте! Хотел спросить. Как можно сохранить список объектов в XML файл вручную? Я...

Сохранение объектов класса в файл
Есть несколько массивов, которые создаются по ходу работы приложения, и которые нужно сохранять в...

Сохранение и Загрузка объектов класса через файл
Имеется иерархия классов с множественным наследованием. Множество объектов классов хранятся в...

Сохранение объектов в XML. Вложенность 3 порядка
Здравствуйте. Нужна помощь. Есть класс "Проба" public class Sample { public int...

11
Warrior
496 / 423 / 177
Регистрация: 23.11.2014
Сообщений: 932
07.01.2015, 22:38 2
Класс не паблик
0
443 / 389 / 151
Регистрация: 23.01.2011
Сообщений: 1,045
07.01.2015, 22:41 3
C#
1
public class AnimalTip
0
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 86
07.01.2015, 22:42  [ТС] 4
Цитата Сообщение от _exp10der_ Посмотреть сообщение
Класс не паблик
изменил на
C#
1
 public class AnimalTip
выскакивает тоже окно с другой ошибкой
0
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 86
07.01.2015, 22:43  [ТС] 5
вот что вылетает
Сохранение объектов класса в Xml файл
0
Warrior
496 / 423 / 177
Регистрация: 23.11.2014
Сообщений: 932
07.01.2015, 22:47 6
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
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
 
public class AnimalTip
{
    private string _name_tip; //название типа
    private string _inform; //инфо о типе
    private string _habitat; //среда обитания
 
    public AnimalTip(string name_tip, string inform, string habitat)
    {
        _name_tip = name_tip;
        _inform = inform;
        _habitat = habitat;
    }
 
    public AnimalTip()
    {
    }
 
    public string Name_Tip
    {
        get { return _name_tip; }
        set { _name_tip = value; }
    }
 
    public string Inform
    {
        get { return _inform; }
        set { _inform = value; }
    }
 
    public string Habbitat
    {
        get { return _habitat; }
        set { _habitat = value; }
    }
 
    public virtual void saveFile(string path)
    {
        using (StreamWriter sw = File.AppendText(path))
        {
            sw.WriteLine("Тип животного:");
            sw.WriteLine(_name_tip);
            sw.WriteLine(_inform);
            sw.WriteLine(_habitat);
        }
    }
}
 
class Program
{
    static void Main(string[] args)
    {
        List<AnimalTip> tipAnimalList = new List<AnimalTip>();
        tipAnimalList.Add(new AnimalTip("Хордовые", "Тип 4300 видов", "Вода, Суша"));
        tipAnimalList.Add(new AnimalTip("Членистоноогие", "Тип  взятых.", "Вода, Наземно-воздушная, Почва"));
 
        FileStream stream = new FileStream("rrrrrr.xml", FileMode.Create);
        XmlSerializer serializer = new XmlSerializer(typeof(List<AnimalTip>));
        serializer.Serialize(stream, tipAnimalList);
        stream.Close();
    }
}
0
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 86
07.01.2015, 23:04  [ТС] 7
спасибо большое, я так понимаю что бы несколько классов в один файл записывалось нужно дублировать эти строчки?
Цитата Сообщение от _exp10der_ Посмотреть сообщение
C#
1
2
XmlSerializer serializer = new XmlSerializer(typeof(List<AnimalTip>));
serializer.Serialize(stream, tipAnimalList);
с именами других классов?

Добавлено через 10 минут
всё, спасибо, разобрался, теперь встал вопрос об открытии этого файла и обновлении дерева в котором выводятся эти классы
0
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 86
07.01.2015, 23:18  [ТС] 8
вобщем снова оказалась проблема...
листинг кода открытия файла
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
private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    FileStream stream = new FileStream(this.openFileDialog1.FileName, FileMode.Open);
                    XmlSerializer serializer = new XmlSerializer(typeof(List<AnimalTip>));
                    tipAnimalList = serializer.Deserialize(stream) as List<AnimalTip>;
                    XmlSerializer serializer1 = new XmlSerializer(typeof(List<ClassAnimal>));
                    classAnimalList = serializer1.Deserialize(stream) as List<ClassAnimal>;
                    XmlSerializer serializer2 = new XmlSerializer(typeof(List<GroupAnimal>));
                    groupAnimalList = serializer2.Deserialize(stream) as List<GroupAnimal>;
                    XmlSerializer serializer3 = new XmlSerializer(typeof(List<FamilyAnimal>));
                    familyAnimalList = serializer3.Deserialize(stream) as List<FamilyAnimal>;
                    stream.Close();
                    fillingTreeView();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString(), "Ошибка чтения файла!");
                }
            }
        }
ошибка
Сохранение объектов класса в Xml файл
0
Warrior
496 / 423 / 177
Регистрация: 23.11.2014
Сообщений: 932
08.01.2015, 00:40 9
жесть)
вот читайте и разбирайтесь!
http://msdn.microsoft.com/ru-r... 8%D0%B9%29
0
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 86
08.01.2015, 01:41  [ТС] 10
Цитата Сообщение от _exp10der_ Посмотреть сообщение
вот читайте и разбирайтесь!
опять же, если записан один класс то всё понятно, как считать несколько классов и вывести их в дерево не ясно
0
443 / 389 / 151
Регистрация: 23.01.2011
Сообщений: 1,045
08.01.2015, 02:11 11
http://csharpprogramming.ru/xm... a-treeview
0
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 86
08.01.2015, 02:34  [ТС] 12
Цитата Сообщение от Prog_maker Посмотреть сообщение
http://csharpprogramming.ru/xml/c-ra...eniya-treeview
к глубочайшему сожалению - не помогло
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2015, 02:34

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Создание/сохранение класса из/в XML
Создание/сохранение класса из/в XML с какой стороны подойти какую литературу почитать

Сохранение xml данных в xml-файл
Прошу помощи: Есть переменная json, которую необходимо перевести в xml, а затем сохранить на...

Создание нескольких объектов класса и их сохранение (Нужен пример)
Собственно вопрос в названии темы. Можно какую-нибудь самую простейшую программу, которая создает...

Сохранение объектов в файл
В проге на панели лежит несколько объектов. нужно содержимое панели сохранить в файл, а потом...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.