Изграждане на приложение, което работи с XML данни

Наскоро нов формат за данни, XML, придоби популярност. Едно от предимствата му е, че е самозаписващ се формат на данни, което го прави много по-лесен за работа. Въпреки това, много хора все още се плашат от самата дума "XML". В тази статия ще се опитам да докажа простотата и удобството на работа с XML данни, като използвам примерно приложение, което показва XM_ данни в удобна за хората форма и ви позволява да ги редактирате.

Като начало няма да се изкачваме в дебрите на пространството от имена System.XML, а ще се справим с обекта DataSet от пространството от имена System.Data.

Обектът DataSet има два страхотни метода: ReadXml() и WriteXml() - първият чете XML данни в обекта DataSet, а вторият ги извежда. Тези методи са претоварени и ви позволяват или да четете данни от файл на диска, или от поток в RAM, или да извеждате едновременно във файл на диск и в поток.

Подготовка на формата

И така, нека започнем да създаваме приложението. За да направите това, нека създадем нов проект за приложение на C# Windows. (Файл - Нов - Проекти във Visual Studio .NET).

Сега нека започнем да подготвяме формата:

Нека да пуснем компонента ListBox във формата и да му дадем име - listTables (името се дава с помощта на свойството Name). Ние го „прикрепяме“ към левия край на формуляра, като указваме стойността „Left“ в свойството Dock. Както може би се досещате - ще покаже списък с таблици в XML файл. След това ще поставим компонент Splitter във формуляра, който ще ни позволи да променим относителните размери на компонентите във формуляра. И посочете в свойството Dock - "Left". След това нека поставим DataGrid обект във формуляра, който ще показва таблични данни. Нека го наречем dataGrid и зададем свойството Dock на Fill. След това ще поставим още три компонента върху формуляра (след като бъдат поставени върху формуляра, те ще бъдат показани ПОД формуляра):

главно меню-главното меню на приложението, нека го наречем mainMenu.

OpenFileDialog - диалог за отваряне на файл. Нека го наречем openFileDialog.

SaveFileDialog - диалог за запис на файл. Ясно е, че ще го наречем saveFileDialog.

Писане на код

Добавете нова променлива dataSet към класа на формуляра

Нека добавим функцията UpdateListtables(), която ще актуализира списъка с таблици в listTables. За да направи това, той просто ще премине през списъка с таблици в dataSet и ще покаже имената им в listTables.

След това в конструктора на нашата форма ще инициализираме нашите компоненти. Нарекох формата си DataXmlForm, следователно конструкторът се нарича DataXmlForm().

Сега ще работим с mainMenu. Като напишем името на елемента от менюто в полето, което казва „Въведете тук“, можем да добавим нов елемент.

Така че нека добавим основния елемент - File, нека го наречем menuItemFile. Щракваме върху него веднъж и в падащия списък по-долу добавяме елементите Open (име - menuItemOpen), Save (menuItemSave), Close (menuItemClose). Чрез двукратно щракване върху желания елемент от менюто можем да добавим манипулатор. Така че нека щракнете двукратно върху елементите "Отваряне", "Запазване", "Затваряне" и добавете манипулатори към тях. Манипулаторът за елемента от менюто Отвори ще има следното:

След това се нуждаем, когато дадена таблица е избрана в listTables, тя да се показва в dataGrid. За да добавите манипулатор, щракнете два пъти върху listTables. За да покажем на dataGrid откъде да вземе данните, използваме свойството DataSource, в което посочваме dataSet. И за да покажем коя таблица да покажем от dataSet, използваме свойството DataMember: