С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для Конторно
2 / 2 / 1
Регистрация: 04.05.2012
Сообщений: 77

Сериализация: что не так с этим кодом?

22.03.2015, 07:43. Показов 804. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В курсе Байдачного http://www.microsoftvirtualaca... arp_part_2
в 17 уроке
приводится такой код. У автора работает, у меня - нет (только вместо украинского http://censor.net.ua/includes/news_full_ru.xml пришлось поставить ссылку на RIA, Цензор у нас заблокирован цензурой).

Т.е. код включительно
C#
1
string s = await web.DownloadStringTaskAsync(new Uri("http://ria.ru/export/rss2/incidents/index.xml", UriKind.Absolute));
работает, если например сделать
C#
1
Console.Write(s);
- OK, но дальше:

C#
1
2
XmlSerializer xml = new XmlSerializer(typeof(RssClass));
RssClass res = xml.Deserialize(new MemoryStream(Encoding.UTF8.GetBytes(s))) as RssClass;
не ОК. В чем причина?

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
 
namespace ParserConsole
{    
    [XmlRoot(ElementName="rss")]
    public class RssClass
    {
        [XmlElement(ElementName = "channel")]
        public ChannelClass Channel { get; set; }
    }
 
    public class ChannelClass
    {
        [XmlElement(ElementName = "item")]
        public List<ItemClass> Items { get; set; }
    }
 
    public class ItemClass
    {
        [XmlElement(ElementName = "title")]
        public string Title { 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
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Serialization;
 
namespace ParserConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            ReadData();
            Thread.Sleep(1000);
            Console.ReadKey();
        }
 
        private async static void ReadData()
        {
            WebClient web = new WebClient();
            string s = await web.DownloadStringTaskAsync(new Uri("http://ria.ru/export/rss2/incidents/index.xml", UriKind.Absolute));
            
            XmlSerializer xml = new XmlSerializer(typeof(RssClass));
 
            RssClass res = xml.Deserialize(new MemoryStream(Encoding.UTF8.GetBytes(s))) as RssClass;
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2015, 07:43
Ответы с готовыми решениями:

Что не так с этим кодом? В чем его ошибка?
public class CustomMath { public static int multiply(int a, string b) { return a * b; } }

Бинарная сериализация, что-то не так
Решил заменить реализацию ISerializable , атрибутами...Ну и , конечно , нельзя , чтобы все взяло и заработало. Есть поле IncludedQuantities...

Что-то не так с кодом
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApp7 { class...

3
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
22.03.2015, 09:39
Дело не в десериализации, а в данных. Если сохранить файл и прочитать, то всё читается:
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
class Program {
    static void Main(string[] args) {
        XmlSerializer xml = new XmlSerializer(typeof(RssClass));
        RssClass rss = xml.Deserialize(new StreamReader("index.xml")) as RssClass;
        foreach (ItemClass item in rss.Channel.Items) {
            Console.WriteLine(item.Title);
        }
        Console.Read();
    }
}
[XmlRoot(ElementName = "rss")]
public class RssClass {
    [XmlElement(ElementName = "channel")]
    public ChannelClass Channel { get; set; }
}
 
public class ChannelClass {
    [XmlElement(ElementName = "item")]
    public List<ItemClass> Items { get; set; }
}
 
public class ItemClass {
    [XmlElement(ElementName = "title")]
    public string Title { get; set; }
}
1
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
22.03.2015, 09:48
Конторно,
C#
1
2
3
4
5
        private static RssClass ReadData()
        {
            using (var st = new WebClient().OpenRead("http://ria.ru/export/rss2/incidents/index.xml"))
                return (RssClass) new XmlSerializer(typeof (RssClass)).Deserialize(st);
        }
1
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
22.03.2015, 10:27
Ну а если так уж хочется асинхронную загрузку, хотя смысла я не вижу, тогда так:
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
class Program {
    static void Main(string[] args) {
        RssClass rss = ReadData().Result;
        foreach (ItemClass item in rss.Channel.Items) {
            Console.WriteLine(item.Title);
        }
        Console.Read();
    }
    private async static Task<RssClass> ReadData() {
        WebClient web = new WebClient();
        string s = await web.DownloadStringTaskAsync(new Uri("http://ria.ru/export/rss2/incidents/index.xml", UriKind.Absolute));
 
        XmlSerializer xml = new XmlSerializer(typeof(RssClass));
 
        return xml.Deserialize(new MemoryStream(Encoding.Default.GetBytes(s))) as RssClass;
    }
}
[XmlRoot(ElementName = "rss")]
public class RssClass {
    [XmlElement(ElementName = "channel")]
    public ChannelClass Channel { get; set; }
}
 
public class ChannelClass {
    [XmlElement(ElementName = "item")]
    public List<ItemClass> Items { get; set; }
}
 
public class ItemClass {
    [XmlElement(ElementName = "title")]
    public string Title { get; set; }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2015, 10:27
Помогаю со студенческими работами здесь

Что не так с кодом?
Задание Имеется текстовая строка, которая содержит произвольное скобочное выражение (скобки (), , или {}). Необходимо создать функцию...

Что я делаю не так с кодом?
Запускаю и как только нажимаю на цифру и ентер консоль закриваеться.Что не так сдесь

Что не так с этим кодом?
Что не так с этим кодом? #include &lt;stdio.h&gt; struct Texture { unsigned int tex; Texture() { tex = 0; } };

Что не так с этим кодом ?
В PyCharm все работает, а если из командной строки python-e файл давать, то ошибку выдает ! from selenium import webdriver ...

Что не так с этим кодом? Массивы
Подскажите, пожалуйста, что здесь неправильно. Дан массив из 20 элементов. Массив заполняется с клавиатуры. Вывести массив на экран....


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru