Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 05.05.2017
Сообщений: 5

XML сериализация создает файл с пустыми данными

05.05.2017, 00:49. Показов 2205. Ответов 7

Студворк — интернет-сервис помощи студентам
создал базу данных на С #, данные которые ввожу в DGV хочу сохранить в XML файл, код работает, но в 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
[Serializable]/////////клас
public class friends
{
 
    public int Id { get; set; }
 
    public string FirstName { get; set; }
 
    public string LastName { get; set; }
 
    public int Age { get; set; }
 
    public string Number { get; set; }
 
    public int House { get; set; }
 
    public string Adress { get; set; }
 
}
////обработчик нажатие на кнопку
private void button4_Click(object sender, EventArgs e)//////импорт в XML
    {
 
 
        friends p1= new friends();
        XmlSerializer serial = new XmlSerializer(typeof(friends));
        using (FileStream fs = new FileStream(Environment.CurrentDirectory + "\\book.xml", FileMode.Create, FileAccess.Write))
        {
            serial.Serialize(fs, p1);
            MessageBox.Show("XML was created");
        }
       }
///вот такой код в XML

XML
1
2
3
4
5
6
7
<?xml version="1.0"?>
<friends xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Id>0</Id>
<Age>0</Age>
<House>0</House>
</friends>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.05.2017, 00:49
Ответы с готовыми решениями:

XML-сериализация и занятый файл
Добрый день. Пишу программу: using System; using System.IO; using System.Xml; using System.Xml.Serialization; namespace...

Сохранение данных с DataGrid в XML-файл(сериализация)
У меня есть три класса, передача данных которых на формы происходит через DataBinding. Вопрос, как сохранить данные с datagrid'ов в XML...

Неправильный XML файл - Сериализация и десериализация класса
У меня есть сериализация и десериализация класса. При десериализации вылезает исключение Необработанное исключение типа...

7
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18277 / 14200 / 5368
Регистрация: 17.03.2014
Сообщений: 28,881
Записей в блоге: 1
05.05.2017, 01:12
alexandr09, метод button4_Click создает новый экземпляр friends со значениями по умолчанию. Разумеется при сериализации именно пустые значения и записываются. Чтобы записались данные необходимо сериализовать класс где они есть.

И, кстати, атрибут Serializable не нужен для работы XML сериализации.
1
0 / 0 / 0
Регистрация: 05.05.2017
Сообщений: 5
05.05.2017, 01:43  [ТС]
У меня есть три обработчика, что посоветуете зделать?как правильно сериализовать можно?
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
   [Serializable]
    public partial class Form1 : Form
        {
        Model1Container db;
        
        public Form1()
        {
            InitializeComponent();
            
            db = new Model1Container();
            db.friendsSet.Load();
            dataGridView1.DataSource = db.friendsSet.Local.ToBindingList();
 
        }
 
        private void button1_Click(object sender, EventArgs e)//////////////add information
        {
            Form2 friendForm = new Form2();
            DialogResult result = friendForm.ShowDialog(this);
                                                                
            if (result == DialogResult.Cancel)
                return;
            friends friends = new friends();
            friends.FirstName = friendForm.textBox1.Text;
            friends.LastName = friendForm.textBox2.Text;
            friends.Age = (int)friendForm.numericUpDown1.Value;
            friends.Number = friendForm.textBox3.Text;
            friends.House = (int)friendForm.numericUpDown2.Value;
            friends.Adress = friendForm.textBox4.Text;
 
            db.friendsSet.Add(friends);
            db.SaveChanges();
 
            MessageBox.Show("refresh");
        }
 
        private void button2_Click(object sender, EventArgs e)///////////////edit information
        {
            if (dataGridView1.SelectedRows.Count > 0)
            {
                int index = dataGridView1.SelectedRows[0].Index;
                int id = 0;
                bool converted = Int32.TryParse(dataGridView1[0, index].Value.ToString(), out id);
                if (converted == false)
                    return;
 
                friends friends = db.friendsSet.Find(id);
                Form2 friendForm = new Form2();
 
                friendForm.textBox1.Text = friendForm.textBox1.Text;
                friendForm.textBox2.Text = friends.LastName;
                friendForm.numericUpDown1.Value = friends.Age;
                friendForm.textBox3.Text = friends.Number;
                friendForm.numericUpDown2.Value = friends.House;
                friendForm.textBox4.Text = friends.Adress;
 
                DialogResult result = friendForm.ShowDialog(this);
                if (result == DialogResult)
                    return;
 
                friends.FirstName = friendForm.textBox1.Text;
                friends.LastName = friendForm.textBox2.Text;
                friends.Age = (int)friendForm.numericUpDown1.Value;
                friends.Number = friendForm.textBox3.Text;
                friends.House = (int)friendForm.numericUpDown2.Value;
                friends.Adress = friendForm.textBox4.Text;
 
                db.SaveChanges();
                dataGridView1.Refresh();
                MessageBox.Show("refresh");
            }
        }
 
        private void button3_Click(object sender, EventArgs e)/////delete information
        {
            if (dataGridView1.SelectedRows.Count > 0)
            {
 
                int index = dataGridView1.SelectedRows[0].Index;
                int id = 0;
                bool converted = Int32.TryParse(dataGridView1[0, index].Value.ToString(), out id);
                if (converted == false)
                    return;
                friends friend = db.friendsSet.Find(id);
                db.friendsSet.Remove(friend);
                db.SaveChanges();
                MessageBox.Show("refresh");
            }
        }
Добавлено через 14 минут
OwenGlendower, я только начал разбираться в XML,вот тому не могу понять
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18277 / 14200 / 5368
Регистрация: 17.03.2014
Сообщений: 28,881
Записей в блоге: 1
05.05.2017, 02:18
alexandr09, когда именно нужно выполнять сериализацию? И, еще, зачем оно здесь нужна раз данные заносятся в БД?
0
0 / 0 / 0
Регистрация: 05.05.2017
Сообщений: 5
05.05.2017, 14:45  [ТС]
OwenGlendower, ну суть в тому что у меня есть вот такая база данных. Допустим я добавляю несколько полей в DGV, а потом мне нужно в обработчике событие(Import in XML) все те данные что были в DGV импортировать в XML файл. типа работа з базой данных и XML файлом.
Миниатюры
XML сериализация создает файл с пустыми данными  
0
0 / 0 / 0
Регистрация: 05.05.2017
Сообщений: 5
05.05.2017, 14:57  [ТС]
OwenGlendower, код сериализации вставлял в кнопку Add, но тогда в XML сохранить мог только одну запись,ту которую добавлял первую. А мне надо сначал добавить несколько в грид, а тогда все в XML.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18277 / 14200 / 5368
Регистрация: 17.03.2014
Сообщений: 28,881
Записей в блоге: 1
06.05.2017, 02:07
alexandr09, нужно сначала получить все книги в List<T> или массив и сериализовать уже его.
0
0 / 0 / 0
Регистрация: 05.05.2017
Сообщений: 5
07.05.2017, 14:14  [ТС]
OwenGlendower, спасибо,зделал)) а как теперь правильно зделать Deserialize, чтобы после добавление данных из 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
private void button4_Click(object sender, EventArgs e)//////import from XML
        {
            if (dataGridView1.Rows.Count > 0) 
            {
                MessageBox.Show("Please,delete all data from DGV before importing");
            }
            else
            {
                if (File.Exists("F:\\dataBase\\database_2.0\\sasha\\bin\\Debug\\book.xml")) 
                {
                    XmlSerializer serial = new XmlSerializer(typeof(List<friends>)); // <--
 
                    using (FileStream fs = new FileStream(Environment.CurrentDirectory +
                        "\\book.xml", FileMode.Open, FileAccess.Read))
                    {
                        _friend=serial.Deserialize(fs)as List<friends>; // <--
                    }
                    
                    dataGridView1.DataSource = _friend;
                    
                    db.SaveChanges();
                    dataGridView1.Refresh();
                    MessageBox.Show("Exported successfully");
                }
                else
                {
                    MessageBox.Show("404 XML file not found ");
                }
            }
Добавлено через 3 минуты
OwenGlendower, после import from XML,нажимать на кнопку edit данных, прога вылетала(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2017, 14:14
Помогаю со студенческими работами здесь

Сериализация каталога файлов в бинарный или xml файл
Доброго времени суток, уважаемы форумчане! Возникла такая проблема. Необходимо сериализовать каталог файлов в бинарный или xml. Построила...

WriteXml создает xml файл или только пишет в существующий?
Есть необходимость сохранить данные (DataSet) в xml файл. Знаю, что для этих целей существует метод WriteXml. В msdn 2 примера: ...

Xml сериализация: программа пропускает блок try и сразу выдает то, что файл не выбран
никак немогу найти ошибку, почему то программа пропускает блок try и сразу выдает мне то что файл не выбран хотя файл я выбрал и указал...

Сформировать XML файл данными из Excel
у меня есть файл ексел, сохраненный из программы 1с. мне необходимо преобразовать в файл xml с определенными полями.... То есть я...

С помощью php создать и открыть файл xml с данными
Добрый день! Стоит задача, с помощью php создать и открыть файл xml с данными. Для решения использую PHPExcel. Документ создается и...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru