Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2012, 03:25   #1
Cancerman
Новичок
Джуниор
 
Регистрация: 09.05.2012
Сообщений: 2
По умолчанию Сериализация XML

Уважаемые, профессионалы! Попытался сериализовать XML в виде списка элементов с атрибутами из источника DataGridView, но получил другой результат вместо желаемого. У кого есть опыт в сериализации файлов с использованием DataGridView, буду благодарен за помощь.

В результате сериализации должен получиться XML следующего вида:
Код:
<?xml version="1.0" encoding="UTF-8" ?>
<list name="Name">
  <example text="Example1" active="true" type="1">
      <field right="false" text="NO" />
      <field right="true" text="OK" />
  </example>
  <example text="Example2" active="true" type="2">
      <field right="true" text="OK" />
      <field right="false" text="NO" />
  </example>
  <example text="Example3" active="true" type="3">
      <field right="true" text="OK"/>
      <field right="false" text="NO" />
  </example>
</list>
а получился XML такого содержания:
Код:
<?xml version="1.0" encoding="utf-8" ?> 
-<ArrayOfExamples>
     <list name="Name" /> 
  </ArrayOfExamples>
У кого есть соображения можно излагать! Для общего понимания как построены классы и инициализируются объекты прилагаю проект в архиве.
Вложения
Тип файла: rar SerializeDataGridView.rar (58.0 Кб, 32 просмотров)
Cancerman вне форума Ответить с цитированием
Старый 10.05.2012, 09:21   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Вот рабочий код.
Код:
            Examples TTest = new Examples(); // создали экземпляр
            TTest.Name = "Name";    // задали имя

            Example item1 = new Example(); // создали парочку элементов и заполнили поля
            item1.Text = "Example1";
            item1.Active = "true";
            item1.Type = "1";
            field itf1 = new field();
            itf1.right = "false";
            itf1.text = "OK";
            item1.FieldList.Add(itf1);

            Example item2 = new Example(); // еще один элемент с полями
            item1.Text = "Example2";
            item1.Active = "true";
            item1.Type = "2";
            field itf2 = new field();
            itf2.right = "false";
            itf2.text = "NO";
            item2.FieldList.Add(itf2);

            TTest.ExampleList.Add(item1);  // добавляем в список
            TTest.ExampleList.Add(item2);

            // сериализуем
            using (TextWriter writer = new StreamWriter(@"C:\test.xml"))
            {
                try
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(Examples));
                    XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
                    ns.Add(String.Empty, String.Empty);
                    serializer.Serialize(writer, TTest, ns);
                    writer.Close();
                }
                catch (Exception ex)
                {
                    ex.Message.ToString();
                    if (writer != null) writer.Close();
                }
            }
Резульат - файл XML с содержанием:

Код:
<?xml version="1.0" encoding="utf-8"?>
<list name="Name">
  <example text="Example2" active="true" type="2">
    <field right="false" text="OK" />
  </example>
  <example>
    <field right="false" text="NO" />
  </example>
</list>
Вроде тоже самое что и в вашем примере. Только полей меньше.
И дополнение к классам.
Все поял надо сделать нормальных типов а не String.
Если булевские то делать bool, перечисляемые также enum и тд.

То есть вам для сериализации датагрида надо все поля переписать в экземпляр класса и затем сохранить в XML.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 15.05.2012, 00:24   #3
Cancerman
Новичок
Джуниор
 
Регистрация: 09.05.2012
Сообщений: 2
Хорошо

WorldMaster, спасибо, это именно то, что было задумано, вопрос был в правильной реализации через DataGridView. Привязал поля к DataGridView, все поля отлично сохраняются в XML. Это один из оптимальных методов сериализации множества полей в единую структуру XML.
Cancerman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XML-сериализация проблемных классов (Font, Color, и т. д) ds.Dante Общие вопросы .NET 1 18.07.2011 20:12
XML Сериализация ds.Dante Общие вопросы .NET 0 21.10.2009 13:09
xml сериализация ???? Maladoj Общие вопросы .NET 2 28.03.2009 12:06
сериализация Crucian Общие вопросы C/C++ 5 18.11.2007 16:37