ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode


XML файлы C#: создание, загрузка, редактирование, удаление


Сегодня мы создадим программу, позволяющую записывать, редактировать и удалять XML-данные на языке C#  в Visual Studio.


За основу XML-данных мы возьмём слегка видоизмененный код из статьи о считывании XML-файла в программу. А именно будем создавать подобные записи:

Внешний вид

Выглядеть наша программа будет вот так:

Создание, загрузка, редактирование, удаление XML-файла C#

У на нашей форме находятся следующие элементы: TextBox, NumericUpDownComboBox, а также кнопки и элемент DataGridView, разбитый на три столбца и занимающий большую часть формы.

Столбцы настраиваются при нажатии ПКМ на DataGridView и выборе вкладки «Правка столбцов», либо при нажатии на кнопку Создание, загрузка, редактирование, удаление XML-файла C# на этом же элементе. В итоге должно получиться вот так:

Создание, загрузка, редактирование, удаление XML-файла C#

В этом окне можно настроить имя, ширину и прочие свойства столбцов. Также стоит ознакомиться с некоторыми изменениями в свойствах данного элемента, которые мы внесли (в исходном файле, который можно скачать внизу статьи). Для удобства использования и избежания некоторых ошибок мы запретили в DataGridView добавлять строки, выбирать более одной строки, а также редактировать данные.

Точно такими же способами, через ПКМ и Создание, загрузка, редактирование, удаление XML-файла C# в ComboBox надо занести два значения «True» и «False» во вкладке «Изменить элементы».

Добавление данных

Далее переходим к коду. Перво-наперво нам надо подключить библиотеку IO:

Данная библиотека отвечает за загрузку, запись и чтение файлов. Она нам понадобится, потом что мы в итоге будем сохранять наш файл на диск.

Теперь идём по кнопкам. Кнопку «Добавить» мы запрограммируем таким образом, что при заполнении наших TextBox’aNumericUpDown’a и ComboBox’a необходимыми данными и последующем нажатии на данную кнопку, эти записи выводились в DataGridView примерно таким образом:

Создание, загрузка, редактирование, удаление XML-файла C#

Для этого в коде кнопки пишем следующее:

Если TextBox будет пустой, то мы выведем пользователю сообщение, чтобы он заполнил все поля, если же в нём что-либо имеется, тогда мы добавляем строку, в каждый из трёх столбцов которой записываем соответствующие данные.

Сохранение XML-файла

Итак, мы можем добавить сколько угодно записей. Теперь надо их сохранить как один XML-файл.

Поэтому переходим к коду кнопки «Сохранить как XML»:

По сути мы просто создаем кэш данных под названием ds, затем в этот кэш заносим таблицу со столбцами Name, Age и Programmer.

Затем при помощи оператора цикла foreach, который работает с группами объектов (например, со столбцами и строками таблицы) создаем строку с тремя столбцами, в каждый из которых записываем данные из соответствующих столбцов dataGridView.

В XML-файл данные из ds переводятся автоматически при помощи метода WriteXml.

Все введенные данные помещаются между тегами  <NewDataSet> и </NewDataSet>. В этих тэгах заключены другие: <Employee>…</Employee>. Можно понять, что это — наши строки, которые мы так назвали здесь:

Количество таких тегов будет равно количеству строк в DataGridView и, соответственно, количеству строк в ds.

Ну а уже в этих тэгах заключены оставшиеся: <Name>…</Name>, <Age>…</Age>,  <Programmer>…</Programmer> — это всё столбцы конкретной строки.

Соответственно, между этими тремя парами тэгов записаны наши данные, введенные в программе — имя, возраст и ответ, является ли данное лицо программистом.

Сохранение данного XML-файла будет произведено по пути, записанному в скобках следующей строки:


В данном случае файл сохраняется на диск G и имеет название Data.xml.

Важно: проверьте, имеет ли Visual Studio права для сохранения данных на выбранный вами диск. Если у него не будет для этого прав, то появится ошибка и файл не будет сохранен.

Если всё пройдёт успешно, то появится сообщение о том, что файл сохранен, иначе программа скажет, что файл невозможно сохранить.

Мы научились добавлять и сохранять XML-файл при помощи класса DataSet и элемента DataGridView.

Загрузка XML-файла

Теперь сделаем загрузку XML-данных в нашу программу. Переходим в код соответствующей кнопки «Загрузить XML» и пишем:

Здесь всё с точностью до наоборот. Мы снова создаем пустой кэш данных под названием ds, но в этот раз вносим в него данные из файла Data.xml при помощи метода ReadXml, который автоматически считывает файл именно в формате XML, представляем эти данные в виде таблицы, а затем переносим их в обратном порядке — из таблицы ds в DataGridView.

Создание, загрузка, редактирование, удаление XML-файла C#

Также в самом начале кода можно увидеть, что мы запретили загрузку XML-данных, если в DataGridView имеются записи. Можно и не создавать это ограничение, тогда записи из XML-файла будут занесены в DataGridView по порядку после записей, уже там имеющихся. Для исправления же данной «ошибки» мы создали кнопку «Очистить таблицу», код которой будет описан ниже.

Таким образом происходит загрузка XML-файла.

Редактирование данных

Теперь сделаем возможность редактирования данных для XML-файла.

Редактирование мы представим в следующем виде — пользователь выбирает в DataGridView какую-либо строку, а в TextBox’еNumericUpDown’е и ComboBox’е будут выводиться соответствующие этой строке данные. В этих элементах можно будет менять имя, возраст и причастность к профессии программиста, а после нажатия на кнопку «Редактировать» изменения запишутся в ту же строку DataGridView’а.

Создание, загрузка, редактирование, удаление XML-файла C#

До редактирования

 

Создание, загрузка, редактирование, удаление XML-файла C#

После редактирования

Итак, для начала мы переходим в события элемента DataGridView (значок молнии), ищем там MouseClick и щёлкаем на поле рядом с ним два раза:

Создание, загрузка, редактирование, удаление XML-файла C#

В появившейся части кода пишем:

Смысл данных записей в том, что при выборе той или иной строки DataGridView’a в TextBox заносится первый столбец выбранной строки, в NumericUpDown — второй столбец, а в СomboBox — третий. Таким образом мы выводим все данные, которые можно будет поменять. Теперь переходим к коду кнопки «Редактировать» и пишем в эту часть:

Если в DataGridView выбрано больше одной строки (в конструкторе формы мы изменили свойство, позволяющее пользователю выбирать больше, чем одну строку, так что, фактически, можно было написать в условии и dataGridView1.SelectedRows.Count =1, но это не столь важно), то мы переписываем в первый столбец выбранной в DataGridView’е строки данные из TextBox’a, во второй столбец — данные из NumericUpDown’a, в третий столбец — данные из ComboBox’a.

Если же строка не выбрана, то всплывет ошибка.

Удаление данных

При выборе строки и нажатии на кнопке «Удалить», данная строка сотрется из DataGridView’a. Для этого надо написать небольшой код к данной кнопке:

 Очистка таблицы

Для загрузки XML-данных из файла нам необходимо сначала очистить DataGridView, как описано в разделе «Загрузка XML-файла». Код кнопки «Очистить таблицу» представлен ниже:

Итак, мы создали программу, позволяющую добавлять, редактировать и удалять данные, а также сохранять их как XML-файл, а также загружать его.

Полностью рабочая программа представлена ниже:

Скачать исходник

 

 

Удачного изучения программирования!

 

5/5 - (10 голосов)



Поделиться в соц. сетях:

6 комментария(ев) к статье “XML файлы C#: создание, загрузка, редактирование, удаление

  1. Евгений

    Не работает клавиша Загрузить Xml потому что неправильно прописан путь к xml файлу, сохраняет он вот так «ds.WriteXml(«D:\\ds\\Data.xml»);» а загружает так ds.ReadXml(«G:\\Data.xml»); нужно эту строчку поменять на ds.ReadXml(«D:\\ds\\Data.xml»);

  2. Лариса

    А для какой версии вижуал студии или C# написан код программы? Чем открывать код ?

  3. Kate

    Можно ли реализовать тоже самое, только нажимая на кнопку добавить/редактировать открывалось новое окно где мы в textbox будем вводить информацию и по нажатию на кнопку «добавить» новая информация записывалась в файл и появлялась в dataGridView.
    Заранее большое спасибо )

  4. Имя

    как понимать эту часть кода: row[«Name»]
    ? Почему здесь обращаются как будто к массиву, но вместо индекса массива — название? Пожалуйста, скажите, как это называется и что прочитать, чтобы понять

Добавить комментарий для Имя Отменить ответ

Ваш адрес email не будет опубликован.