Создание и чтение XML-файла C#

В данном уроке будет рассмотрена работа с XML на языке C#, в частности, создание простого XML-файла и его чтение в Windows Forms и в консольном приложении Visual Studio.

Что такое XML?

XML –  это так называемый язык разметки, который используется для представления иерархических данных и структиуривания передаваемой информации в удобной для программ, приложений и различных систем форме. XML универсален и не зависит от платформы, на которой используется. Как и у любого языка, у него есть свой собственный (но довольно несложный) синтаксис, представленный в основном в виде различных тегов. Внешне он несколько похож на язык гипертекстовой разметки HTML, но если HTML используется для разметки страниц и отображения данных на них, то XML используется для структурирования данных, их сортировки, фильтрации и т.п. Можно даже приписать XML к аналогу баз данных, который не требует СУБД. В особенности XML-файлы хороши в представлении древовидных (иерархических) БД с произвольной длинной ветвей. В большинстве современных реляционных БД реализация подобной структуры далеко не всегда бывает эффективной и удобной, в особенности, когда длина ветвей доходит до десятков элементов.

Ко всему прочему, XML-документ довольно легко создать, для этого не нужно иметь никаких особенных программ и специфического ПО. В самом простом случае можно обойтись даже стандартной программой “Блокнот”. А при наличии Visual Studio, предпочтительнее воспользоваться им, так как работа с XML-файлами в нём очень удобна и проста. Кроме того, есть возможность заполнить XML-файл программно, используя, например, консольное приложение Visual Studio.

Как создать XML-файл в Visual Studio вручную

Для начала попробуем создать простенький XML-файл вручную в Visual Studio и в блокноте.

Чтобы создать пустой XML-документ в Visual Studio, следует в окне программы нажать вкладку “Файл”, а затем выбрать строки “Создать” и “Файл”, как показано на скриншоте:

Создание и чтение XML-файла

Затем в появившемся окне следует выбрать “XML-файл” и нажать кнопку “Открыть”.

Создание и чтение XML-файла
Вот и всё, XML-документ создан. Изначально в нём записана лишь одна строка:

Как легко понять, она означает, что созданный файл поддерживает язык XML версии 1.0 и работает с кодировкой UTF-8.

Теперь давайте запишем в него какие-нибудь данные. Например, такие:

Теги в XML можно именовать так, как удобно пользователю, что сильно упрощает визуализацию XML-файлов для людей. В данном примере у нас имеются иерархические данные в три ступени. Сначала идёт структура каталога, обозначенная тегами <root></root>. В неё вложен каталог с названием Employee и атрибутом name, которому присвоено значение “Ivan Ivanov”. А в этот каталог вложены данные Age и Programmer. Иными словами, у нас теперь в корне структуры данных имеется некоторый сотрудник Иван Иванов, которому 30 лет и который является программистом. Таких сотрудников может быть очень много, как может быть много и атрибутов этих сотрудников, а также атрибутов у атрибутов этих сотрудников и даже атрибутов у атрибутов у атрибутов этих сотрудников.
Примерно так и выглядят XML-файлы. Данный способ создания XML-файла довольно прост и удобен в применении. Если же под рукой не оказалось Visual Studio или другой специализированной программы, то можно обойтись и простым блокнотом.

Как создать XML-файл в блокноте

Создавать какие-либо большие и объемные XML-файлы в блокноте будет довольно затруднительно, есть возможность запутаться и ошибиться во всём обилии тегов и данных, однако создать простенькую базу вполне возможно. Для этого надо лишь открыть Блокнот и просто начать писать. Например, ту же структуру, что и выше:

Создание и чтение XML-файла

В принципе, можно обойтись и без строки о версии XML-языка и без присваивания кодировки, которая создавалась автоматически в примере с Visual Studio выше, но лучше будет записать и её. Чтобы сохранить данный файл правильно, надо при сохранении выбрать “Тип файла” – Все файлы, а к имени файла прибавить расширение .xml. Кроме того, стоит выбрать кодировку “UTF-8″.

Создание и чтение XML-файла

Таким образом и создаются XML-файлы вручную.

Как читать XML-файл C#

Давайте попробуем создать программу, которая считывала бы данные из какого-нибудь XML-файла. Мы будем использовать Windows Forms и язык C#.

В конце у нас должно получиться что-то вроде этого:

Создание и чтение XML-файла C#

Но пока что мы создаем проект Windows Forms. Для начала нам нужен сам XML-файл, из-за которого мы и будем делать программу. Давайте создадим его. Для этого щёлкаем  правой кнопкой мыши на проект в обозревателе решений и выбираем строки “Добавить” и “Создать элемент”.

Создание и чтение XML-файла

Там мы выбираем XML-файл и называем его.

Создание и чтение XML-файлаФайл создан, теперь надо его заполнить, например так, как показано ниже:

Создание и чтение XML-файла

После этого следует в обозревателе решений щёлкнуть на наш файл и в его свойствах изменить значение в вкладке “Копировать в выходной каталог” на “Всегда копировать”, как показано ниже. Это нужно для того, чтобы данные из файла выводились пользователю через программу, т.к. позже будет создан каталог для этих целей.

Создание и чтение XML-файла

Итак, наш XML-файл готов. Преступаем к программе.

Для внешней начинки Form1 нам понадобится элемент propertyGrid и ListBox:

Создание и чтение XML-файла

В propertyGrid мы отключили HelpVisible:

Создание и чтение XML-файла
Теперь нам надо создать класс, который будет получать данные из нашего файла. Для создания класса надо правой кнопкой мыши щёлкнуть на проект и выбрать “Добавить” “Класс”.

Создание и чтение XML-файла

Называем наш класс как-нибудь, например, Employee и нажимаем кнопку “Добавить”.

Затем пишем следующее:

Таким образом мы инициализируем свойства, которые будем получать из файла. Для нас это строковая переменная Name, целочисленная Age и логический тип Programmer.В свойствах мы указываем два метода – get (метод для получения данных) и set (метод для чтения данных). Запись { get; private set; } указывает, что данное свойство используется только для чтения данных, но не для их записи.

Далее создаем конструктор экземпляра:

Здесь мы присваиваем считанные выше значения новым переменным и возвращаем переменную Name – её значения будут выводиться в ListBox’e.

В классе Employee мы настроили всё, что нам необходимо. Теперь свяжем все части воедино через Form1. Переходим к коду формы. Для начала нам надо создать метод LoadEmployees, который будет загружать данные из XML-документа и через класс Employee выводить полученные данные в ListBox. Как мы помним, из класса Employee возвращается переменная Name, поэтому в ListBox’e у нас и будут выводиться только имена сотрудников, а остальные атрибуты мы выведем в propertyGrid’e.
Сначала нам надо подключить директиву

Именно она помогает работать с XML.

Далее создадим сам метод:

Класс XmlDocument указывает на то, что переменная doc будет являться файлом с XML-кодом.

doc.Load, как можно догадаться, указывает на то, что в doc будет загружен XML-файл с именем “xmltext.xml” – это и есть наш файл, который мы создали в самом начале.

Оператор foreach нужен для циклического обращения к элементам коллекции данных, которая в нашем случае представлена базой сотрудников. Запись в скобках этого оператора, грубо говоря, указывает на то, что каждый конкретный узел в нашем файле представлен XML кодом, и именно так его и надо представлять программе.
Далее считываются имя, возраст и причастность к должности программиста. Все данные заносятся по позициям в ListBox.

Для того, чтобы данный метод запускался одновременно с запуском программы, надо добавить запись LoadEmployees() в область кода, показанного ниже:

Теперь нам надо сделать так, чтобы при выборе имени в ListBox’e, все данные, включая имя, возраст и определение, является ли человек программистом, выводились в propertyGrid’e. Для этого дважды щёлкаем левой кнопкой мыши на ListBox’e в форме и в появившемся блоке кода пишем:

Запись  if (listBox1.SelectedIndex != -1) означает, что если в ListBox’e выбран какой-либо элемент, а в нашем случае, имя сотрудника (элементы в нём нумеруются с нуля: 0,1,2,3 и т.д., -1 означает, что не выбран ни один элемент), то в propertyGrid’e должны вывестись элементы, которые закреплены в ListBox’e за конкретным именем.

Наша программа готова. Исходник программы “Чтение XML файла” на C# можно скачать по ссылке ниже:

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

 

 

Создание и чтение XML-файла C#
4.45 (89.09%) 22 votes

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

6 комментария(ев) к статье “Создание и чтение XML-файла C#

  1. CoMMoN

    А как создать такой же файл XML при помощи WinForms и при этом учитывать что есть в файле записи и нужно добавлять?

      1. CoMMoN

        Было бы не так плохо если бы можно было бы сделать к данной программе с данным XML

          1. BeginnerProgr

            Ссылка уже не работает. Можете показать исходники кода, где происходит запись или дать работающую ссылку? Спасибо

            ————————————————————————————————
            Ответ автора: у нас на сайте уже имеется отдельная статья по данной программе: http://vscode.ru/prog-lessons/sozdanie-redaktirovanie-i-udalenie-dannyih-xml-fayla-c-sharp.html
            Приятного изучения :)

  2. qpMAXqp

    Большое спасибо. Оч интересно и удобно таким образом смотреть информацию)

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

Ваш 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="">