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-файл, а также загружать его.

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

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

 

 

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

 

XML файлы C#: создание, загрузка, редактирование, удаление
5 (100%) 4 votes

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

4 комментария(ев) к статье “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.
    Заранее большое спасибо )

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">