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

Deserialize - не удается сохранить много объектов

05.02.2015, 20:24. Показов 1202. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Пытаюсь считать xml файл для его последующего использования. Использую Deserialize.

XML-файл:
Кликните здесь для просмотра всего текста

XML
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
<?xml version="1.0" encoding="windows-1251"?>
<JobArray>
  <job>
    <id>1</id>
    <name>Демонтаж перегородки</name>
    <price>3300</price>
    <measure>куб.м.</measure>
  </job>
<job>
    <id>2</id>
    <name>Кладка перегородки из газоблоков 100мм на клей из сухих смесей</name>
    <price>270</price>
    <measure>кв.м.</measure>
  </job>
<job>
    <id>3</id>
    <name>Демонтаж плинтуса пола </name>
    <price>20</price>
    <measure>п.м.</measure>
  </job>
<job>
    <id>4</id>
    <name>Подготовка поверхности стен (демонтаж обоев, расшивка швов, насечка и др.)</name>
    <price>24</price>
    <measure>кв.м</measure>
  </job>
<job>
    <id>5</id>
    <name>Демонтаж розеток, выключателей</name>
    <price>25</price>
    <measure>шт.</measure>
  </job>
</JobArray>


Класс которым десериализую:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Serializable]
    public class job
    {
        public int id { get; set; }
        public string name { get; set; }
        public float price { get; set; }
        public string measure { get; set; }
 
        job() { }
 
        job(int t1, string t2, float t3, string t4)
        {
            id = t1;
            name = t2;
            price = t3;
            measure = t4;
        }
 
        public void PrintJob()
        {
            MessageBox.Show(name);
        }
    }


Сама десериализация:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
XmlSerializer deserializerXS = new XmlSerializer(typeof (job), new XmlRootAttribute("JobArray"));
 
                job[] rjob;
 
                using (FileStream myFileStream = new FileStream(FullFileName, FileMode.Open))
                {
                    
                    rjob = (job[])deserializerXS.Deserialize(myFileStream);
                }


При попытке ее провести Студия ругается так:

Дополнительные сведения: Не удалось привести тип объекта "Pasha1Wpf.job" к типу "Pasha1Wpf.job[]".

Что делать?

Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.02.2015, 20:24
Ответы с готовыми решениями:

Выбор объектов возвращает слишком много объектов
Делаю выбор объекта. Рисую объекты: ... GL.InitNames() ... Dim temp As Integer temp = 1 For i As Integer = 1 To NM

Много, много объектов
Всем привет! Есть одно задание, но я понятия не имею как его реализовать. Суть такова, что нужно получить множество (100000+)одинаковых...

Создается много объектов
Доброго времени суток, у меня есть функция для создания одного объекта, я её прогоняю по циклу 50 раз, а у меня создается больше объектов к...

1
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
05.02.2015, 22:50
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Xml.Serialization;
 
namespace ConsoleApplication1
{
    [XmlRoot("JobArray"), Serializable]
    public class JobCollection //Тут, предположим, наследуешь интерфейс ICollection<Job>
    {
        public JobCollection()
        {
        }
 
        [XmlElement("job")]
        public Job[] Jobs { get; set; }
    }
}
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
using System;
using System.Xml.Serialization;
 
namespace ConsoleApplication1
{
    [Serializable] 
    public class Job
    {
        public Job() { }
 
        public Job(int id, string name, float price, string measure)
        {
            Id = id;
            Name = name;
            Price = price;
            Measure = measure;
        }
 
        [XmlElement("id")]
        public int Id { get; set; }
 
        [XmlElement("name")]
        public string Name { get; set; }
 
        [XmlElement("price")]
        public float Price { get; set; }
 
        [XmlElement("measure")]
        public string Measure { get; set; }
 
        public override string ToString()
        {
            return string.Format("Id = {0};{4}Name = {1};{4}Price = {2};{4}Measure = {3};{4}",
                Id, Name, Price, Measure, Environment.NewLine);
        }
    }
}
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
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
 
namespace ConsoleApplication1
{
    class Program
    {
        private static bool _grayColor;
 
        static void Main(string[] args)
        {
            string fullFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "XMLFile1.xml");
 
            XmlSerializer deserializerXs = new XmlSerializer(typeof(JobCollection));
 
            JobCollection rjob;
 
            using (FileStream myFileStream = new FileStream(fullFileName, FileMode.Open))
            {
                rjob = (JobCollection)deserializerXs.Deserialize(myFileStream);
            }
 
            foreach (Job job in rjob.Jobs)
            {
                Console.WriteLine(job);
                SwitchColor();
                Console.WriteLine("-----------------------------------");
                SwitchColor();
            }
 
            Console.ReadKey();
        }
 
 
        static void SwitchColor()
        {
            _grayColor = !_grayColor;
            Console.ForegroundColor = _grayColor ? ConsoleColor.Gray : ConsoleColor.White;
        }
    }
}
Добавлено через 2 минуты
JobCollection создал и вообще атрибуты использую, чтобы из-за названий в XML не называть свойства класса и сам класс с маленькой буквы, да и вообще не обязательно, чтобы оно совпадало не важно с маленькой или большой.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.02.2015, 22:50
Помогаю со студенческими работами здесь

Сохранить много данных в mysql
Я делаю программу которая сохраняет всю историю переписок из социальной сети вконтакте и она должна сохранять ее в mysql. Я пробовал вот...

Поместить много объектов в список
Есть приложение с &quot;много кнопок&quot;, кнопки расставлены в дизайнере по своим местам, как на картинке. Все кнопки связаны с единственным...

Как сохранить в файл много раз?
Проблема в том что мне нужно чтобы в файл добавлялись результаты, а у меня перезаписываются, что я не так делаю? Вот кнопка сохранения,...

Как сохранить в массиве много изображений
Добрый день! Инициализирую массив размерностью 0..1000 типа TBitmap и при инициализации позиций массива на 169 позиции программа выдает...

FIFA 12: не удается сохранить профиль
Почему не удается сохранить профиль в фифа 12 . Пишет что надо ПОВТОРИТЬ нажимаешь опять то же самое в косяк не понимаю


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru