Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML, Сериализация 
:(
    Опции темы
bango
Дата 10.9.2011, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 29.9.2009

Репутация: нет
Всего: нет



Возникла следующая проблема. Есть простой XML-файлик следующего вида:
Код

<?xml version="1.0" encoding="utf-8" ?>
 <FormSize>

  <steep_cxpon>155</steep_cxpon>
  
  <winState>Normal</winState>
</FormSize>

пишет ошибку
В документе XML (0, 0) присутствует ошибка.
вот код проги что я делаю не так подскажите плиз
Код

 public class FormSize
        {
            //переменныe для хранения
            public string steep_cxpon;  
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //Создаем экземпляр frmSize класса FormSize:
            FormSize frmSize = new FormSize();
            //Присваеваем текущее значение
            frmSize.steep_cxpon = this.comboBox2.Text;
            //создаем экземпляр xmlset класса XmlSerializer
            XmlSerializer xmlser = new XmlSerializer(typeof(FormSize));
            //Создаю переменную filename которой просвоим
            //назначение файла applicationSetttings.xml в текущей директории
            string filename = System.Environment.CurrentDirectory + "\\applicationSettings.xml";
            //создаем поток filestream для чтения XML - файла
            FileStream filestream = new FileStream(filename, FileMode.Create);
            //Создаем сериализацию для экземпляра frmSize
            xmlser.Serialize(filestream, frmSize);
            //Закрываем порт
            filestream.Close();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Создаем экземпляр frmSizeSetup класса FormSize:
            FormSize frmSizeSetup = new FormSize();
            //создаем экземпляр xmlset класса XmlSerializer
            XmlSerializer xmlser = new XmlSerializer(typeof(FormSize));
            //Создаю переменную filename которой просвоим
            //назначение файла applicationSetttings.xml в текущей директории
            string filename = System.Environment.CurrentDirectory + "\\applicationSettings.xml";
            //создаем поток filestream для чтения XML - файла
            FileStream filestream = new FileStream(filename, FileMode.Open);
            //Экземпляру frmSizeSetup передаем данные, полученные в процессе десериализации
            frmSizeSetup = (FormSize)xmlser.Deserialize(filestream);
            //Устанавливаем текущий параметр
            this.comboBox2.Text = frmSizeSetup.steep_cxpon;
            //Закрываем порт
            filestream.Close();
        }

PM MAIL   Вверх
bango
Дата 11.9.2011, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 29.9.2009

Репутация: нет
Всего: нет



Может я не так XML прикручиваю
Вот так выглядит в примере
user posted image
Я его прикручиваю
Solution Explorer
ПК мыши
Add- new item выбираю XML file

PM MAIL   Вверх
N1ko
Дата 11.9.2011, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 30.12.2007
Где: Киев

Репутация: нет
Всего: нет



Что за FormSize? Что ты пытаешься сделать? Обычно ещё выкладывают более подробный отчёт об ошибке, хотя бы строку где всё скрэшилось. Если ты добавляешь уже существующий xml, то тебе нужно Add- existing item. Просто не совсем понятно что ты пытаешься сделать.
PM MAIL ICQ   Вверх
bango
Дата 11.9.2011, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 29.9.2009

Репутация: нет
Всего: нет



Компилируется без ошибок, а при запуске выдает ошибку.
user posted image
PM MAIL   Вверх
bango
Дата 11.9.2011, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 29.9.2009

Репутация: нет
Всего: нет



Цитата

Что ты пытаешься сделать?

Забыл я пытаюсь прочитать из comboBox2 записать xml, а потом наоборот.
прочитать из xml и записать comboBox2.
PM MAIL   Вверх
Yuretzzo
Дата 12.9.2011, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 12.1.2011
Где: Менск і Мінск...

Репутация: нет
Всего: нет



когда то передо мной стояла задача записать List<T> в XML

Сериализация:
Код

FileStream favailable = new FileStream(@"C:\file.file", FileMode.Create, FileAccess.ReadWrite);
XmlSerializer x = new XmlSerializer(typeof(List<Ticket>));
x.Serialize(favailable, available);
favailable.Close();


Дессериализация:
Код

FileStream favailable = new FileStream(@"C:\file.file", FileMode.Open, FileAccess.Read);
XmlSerializer x = new XmlSerializer(typeof(List<Ticket>));
available = (List<Ticket>)x.Deserialize(favailable);
favailable.Close();


в примере available это List<T> класса Ticket
PM MAIL   Вверх
bango
Дата 12.9.2011, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 29.9.2009

Репутация: нет
Всего: нет



А xml файл как переделать
<Ticket>
А что вот это объяснить можете поподробней
И класс нужно создавать или нет.

PM MAIL   Вверх
RastaDja
Дата 15.9.2011, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: 1
Всего: 5



Цитата(bango @  11.9.2011,  19:55 Найти цитируемый пост)
Компилируется без ошибок, а при запуске выдает ошибку.

чтение
Код

using (TextReader txtReader = new StreamReader("Path.xml"))
{
   FormSize newObj = Serializer.Deserialize(txtReader);
   txtReader.Close();
}

и вначале нало описать правильно свой класс
Код

[XmlRoot("FormSize")]
public class FormSize
{
    [XmlElement("steep_cxpon")]
    public string steep_cxpon = string.Empty;  
}


Это сообщение отредактировал(а) RastaDja - 15.9.2011, 13:06


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
bango
Дата 15.9.2011, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 29.9.2009

Репутация: нет
Всего: нет



Если честно сказать я вообще не понял как это работает 
newObj  сдесь пишет ошибку разясните по подробней
как с этим бороться. smile 

PM MAIL   Вверх
RastaDja
Дата 20.9.2011, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: 1
Всего: 5



Цитата(bango @  15.9.2011,  21:00 Найти цитируемый пост)
newObj  сдесь пишет ошибку

Код

private XmlSerializer Serializer = new XmlSerializer(typeof(FormSize));   

// Сериализация
using (TextWriter txtWriter = new StreamWriter("filename.xml"))

       Serializer.Serialize(txtWriter, obj);    // где obj - экземпляр класса FormSize
        txtWriter.Close();
}
// Десериализация
using (TextReader txtReader = new StreamReader("filename.xml"))
{
        FormSize newObj = (FormSize)Serializer.Deserialize(txtReader);
        txtReader.Close();
}

Описывать класс надо, используя специальные теги (но это не обязательно)
Код

[XmlRoot("FormSize")]
public class FormSize
{
    [XmlElement("steep_cxpon")]  // так будет называтся нода, где хранятся данные переменной steep_cxpon 
    public string steep_cxpon = string.Empty;  
}




--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
bango
Дата 23.9.2011, 18:11 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 29.9.2009

Репутация: нет
Всего: нет



Пример нашел на другом сайте повторил его но до конца еще не разобрался с кодом буду дальше разбираться тема закрыта.   
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0893 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.