Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
18 / 18 / 15
Регистрация: 27.11.2013
Сообщений: 470
1

Запись и чтение структуры из XML

07.01.2015, 12:21. Показов 5133. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Есть структура:
C#
1
2
3
4
5
6
7
struct Bluda
       {
         public int Id;
         public string Nazvanie;
         public double Ves;
         public int Cena;
       }
Нужно записать её в XML-файл, а затем прочитать его же. Может кто помочь с этим?
Программа консольная, с формами не пойдет.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2015, 12:21
Ответы с готовыми решениями:

Чтение/запись структуры
Всем привет! Есть файл, в который записана структура. По сути это дерево и соответственно в каждом...

Чтение и запись структуры в C++
Добрый день, программисты! В общем такая ситуация. Страшно запутался в fread fwrite (это кажется C)...

Чтение/запись структуры
День добрый! Помогите пожалуйста решить задачу: Сформировать текстовый файл, имеющий следующую...

Запись и чтение XML
Нужно сохранить в XML файл объект класса CPolygon, через saveFileDialog. Как это можно сделать?...

9
310 / 206 / 44
Регистрация: 15.02.2012
Сообщений: 605
07.01.2015, 13:03 2
Лучший ответ Сообщение было отмечено FaNaT_96 как решение

Решение

C#
1
  using System.Xml.Serialization;
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    static void Main(string[] args)
    {
      Bluda bludaToWrite = new Bluda();
      bludaToWrite.Id = 1;
      bludaToWrite.Nazvanie = "Pel'men'";
      bludaToWrite.Ves = 0.5;
      bludaToWrite.Cena = 99;
 
      XmlSerializer xmlSerialaizer = new XmlSerializer(typeof(Bluda));
      
      FileStream fw = new FileStream("output.xml",FileMode.Create);
      xmlSerialaizer.Serialize(fw, bludaToWrite);
      fw.Close();
 
      Bluda bludaToRead = new Bluda();
      FileStream fr = new FileStream("output.xml", FileMode.Open);
      bludaToRead = (Bluda)xmlSerialaizer.Deserialize(fr);
      fr.Close();
    }
0
18 / 18 / 15
Регистрация: 27.11.2013
Сообщений: 470
07.01.2015, 17:23  [ТС] 3
Цитата Сообщение от jivot Посмотреть сообщение
XmlSerializer xmlSerialaizer = new XmlSerializer(typeof(Bluda));
Вот эта строка выдает ошибку, что нет доступа. Я с сериализацией никогда не работал, а посему даже представления не имею как её исправить.

Уже не надо, спасибо) Сам смог разобраться.
0
310 / 206 / 44
Регистрация: 15.02.2012
Сообщений: 605
07.01.2015, 17:24 4
у структуры поставьте модификатор public
0
18 / 18 / 15
Регистрация: 27.11.2013
Сообщений: 470
07.01.2015, 17:37  [ТС] 5
Цитата Сообщение от jivot Посмотреть сообщение
у структуры поставьте модификатор public
Скажите, а как вывести на экран то, что записали в документ? Если открываю его, то все норм, но мне ещё нужно, чтобы после записи я смог через программу вывести содержимое файла. И возможно ли записать несколько блюд через цикл?
0
310 / 206 / 44
Регистрация: 15.02.2012
Сообщений: 605
07.01.2015, 17:46 6
Ну так определитесь как на экране должно выглядеть содержимое файла. Прочитайте файл и форматируйте как вам будет угодно.

Можно и через цикл. Создайте массив Bluda[] (например) и измените тип в конструкторе сериализатора typeof(Bluda[]).
0
18 / 18 / 15
Регистрация: 27.11.2013
Сообщений: 470
07.01.2015, 17:59  [ТС] 7
Цитата Сообщение от jivot Посмотреть сообщение
Ну так определитесь как на экране должно выглядеть содержимое файла. Прочитайте файл и форматируйте как вам будет угодно.
Либо я что-то не так сделал, либо что,но тот пример, который вы дали
C#
1
2
3
4
Bluda bludaToRead = new Bluda();
      FileStream fr = new FileStream("output.xml", FileMode.Open);
      bludaToRead = (Bluda)xmlSerialaizer.Deserialize(fr);
      fr.Close();
Не выводит ничего... Я просто с этим никогда не работал. Буду очень благодарен, если вы объясните что да как, от препода все ровно ожидать ничего не стоит.
0
310 / 206 / 44
Регистрация: 15.02.2012
Сообщений: 605
07.01.2015, 18:07 8
Ну так этот код лишь считывает содержимое файла в переменную bludaToRead.

Теперь, если вы хотите вывести содержимое на экран, воспользуйтесь стандартными методами консоли (если у вас консольное приложение)

C#
1
2
3
Console.WriteLine(String.Format("Название: {0}", bludaToRead.Nazvanie));
Console.WriteLine(String.Format("Вес: {0}", bludaToRead.Ves));
Console.WriteLine(String.Format("Цена: {0}", bludaToRead.Cena));
1
51 / 42 / 24
Регистрация: 18.09.2014
Сообщений: 116
07.01.2015, 20:36 9
jivot, для Console.WriteLine не обязательно писать в явном виде String.Format
1
0 / 0 / 0
Регистрация: 18.07.2016
Сообщений: 1
13.01.2017, 14:08 10
Здравствуйте.
Как можно при сериализации добавить закрывающий тег, если внутри тега нет ничего?
Выдает:
XML
1
<prog prog_id="1" art="106_#1"/>
А нужно:
XML
1
<prog prog_id="1" art="106_#1"></prog>
Принципиально, т.к. оборудование требует закрывающий тег.
Другими способами этого могу добиться, мне интересно именно через сериализацию.
0
13.01.2017, 14:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2017, 14:08
Помогаю со студенческими работами здесь

Чтение и запись xml
Здравствуйте. Есть .xml файлик, в котором есть один параметр. &lt;?xml version=&quot;1.0&quot;...

Чтение и запись XML
Здравствуйте! Допустим есть сущностный бин, который с помощью JPA обращается к БД с запросом....

Чтение и запись в xml
Встала такая задача. Нужно написать два метода для чтения данных из xml файла и записи в него, т.е....

Чтение и запись XML
Здравствуйте всем. Интересует вопрос чтения и записи XML Есть какой-то набор данных: name=Маша...

Запись/чтение структуры целиком
как записать структуру одним разом грубо говоря на псевдо коде так: struct Struct { ...

Запись/чтение структуры в файл
есть структура: struct OBYEKT { std::string neym; int nomer; }; std::vector &lt;OBYEKT&gt;...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru