Гостевая
Форум
Разделы
Главная страница
Js скрипты
Php скрипты
Html шаблоны
Книги по Web дизайну
Статьи


Главная страница статей --> Хитрости при программировании php, заметки по базам данных

Создание приложения, работающего с XML-данными

Источник: realcoding.net

Введение.



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


Для начала не будем забираться в дебри пространства имен System.XML, а обойдемся объектом DataSet пространства имен System.Data.


У объекта DataSet есть два замечательных метода: ReadXml() и WriteXml() - первый считывает данные в формате XML в объект DataSet, а второй их выводит. Эти методы перегружены, и позволяют вам как считать данные из файла на диске, или из потока Stream в оперативной памяти, так и вывести как в файл на диске, так и в Stream.


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


Итак приступим к созданию приложения. Для этого создадим новый C#-проект Windows Application. (File - New - Projects в Visual Studio .NET).


Теперь приступим к подготовке формы:


Бросим на форму компонент ListBox и дадим ему имя - listTables (имя дается с помощью свойства Name). Пришвартуем его к левому краю формы, указав в свойстве Dock значение Left. Как вы уже догадались - он будет отображать список таблиц в XML - файле.
Затем поместим на форму копмонент Splitter, который позволит нам менять относительные размеры компонентов на форме. И укажем в свойстве Dock - Left.
Затем поместим на форму объект DataGrid, который будет отображать табличные данные. Обзовем его как dataGrid, а в свойстве Dock укажем - Fill.
Затем поместим на форму еще три компонента (после помещения на форму они отобразятся ПОД формой):


MainMenu - главное меню приложения, назовем его как mainMenu.


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


SaveFileDialog - диалог сохранения файла. Понятно, что его будем звать saveFileDialog.


Написание кода


Добавим новую переменную dataSet в класс формы

private DataSet dataSet;

Добавим функцию UpdateListtables(), которая будет обновлять список таблиц в listTables. Для этого она будет просто пробегать по списку таблиц в dataSet и отображать их имена в listTables.

//Обновление списка таблиц

private void UpdateTableList()

{

//Очищаем список таблиц

listTables.Items.Clear();

//Пробегаемся по таблицам dataSet

foreach(DataTable table in dataSet.Tables)

{

listTables.Items.Add(table.TableName);

}

if(
listTables.Items.Count > 0)

listTables.SelectedIndex = 0;

}

Затем в конструкторе нашей формы проинициализируем наши компоненты. Свою форму я назвал как DataXmlForm, следовательно конструктор зовется DataXmlForm().

public DataXmlForm()

{

InitializeComponent();

//Обавляем фильтр для fileOpenDialog

openFileDialog.Filter =

XML - files (*.xml)*.xmlAll files (*.*)*.*;

//Говорим ему воостанавливать последнюю диреторию

openFileDialog.RestoreDirectory = true;


saveFileDialog.Filter =

XML - files (*.xml)*.xmlAll files (*.*)*.*;

saveFileDialog.RestoreDirectory = true;


//Создаем новый DataSet

//точнее вызываем его контсруктор

dataSet = new DataSet();

}

Теперь будем работать с mainMenu. Набирая наименование пункта в меню в поле, где написано "Type here", мы можем добавить новый пункт.


Итак добавим корневой пункт - File, назовем его menuItemFile. Кликаем по неиу один раз и в раскрывшемся ниже списке добавляем пункты Open (имя - menuItemOpen), Save (menuItemSave), Close (menuItemClose). Кликая два раза по нужному пункту меню, мы можем добавить обработчик. Итак кликнем по 2 раза по пунктам "Open", "Save", "Close" и добавим обработчики на них. В обработчике пункта меню Open будет следующее:

//Открытие файла

private void menuItemOpen_Click

(object sender, System.EventArgs e)

{

if(
openFileDialog.ShowDialog() ==

DialogResult.OK)

{

//Считывание XML - данных в dataSet

dataSet.ReadXml(openFileDialog.FileName);

//Принятие изменений dataSet

dataSet.AcceptChanges();

//Обновление списка таблиц

this.UpdateTableList();

//Изменение заголовка окна

this.Text = Data Xml +openFileDialog.FileName;

}

}

Если мы выбираем какой-либо файл, то он считывается в dataSet. Аналогично сохранение файла, а закрытие программы, вообще, можно оставить без комментариев - настолько оно просто:

//Сохранение XML-данных

private void menuItemSave_Click

(object sender, System.EventArgs e)

{

saveFileDialog.FileName = openFileDialog.FileName;

if(
saveFileDialog.ShowDialog() == DialogResult.OK)

{

//Запись XML-данных из dataSet на диск

dataSet.WriteXml(saveFileDialog.FileName);

//Обновление заголовка окна

this.Text = Data XML +saveFileDialog.FileName;

}

}

//выход из приложения

private void menuItemClose_Click

(object sender, System.EventArgs e)

{

Application.Exit();

}

Далее нам необходимо, чтобы при выделении таблицы в listTables, она отображалась в dataGrid. Для добавления обработчика дважды кликаем по listTables. Чтобы показать dataGridу откуда брать данные воспользуемся свойством DataSource, в котором укажем dataSet. А чтобы показать какую именно таблицу отображать из dataSet используем свойство DataMember:

//Изменение отображаемой таблицы

private void listTables_SelectedIndexChanged

(object sender, System.EventArgs e)

{

//указываем источник данных dataGrid

dataGrid.DataSource = dataSet;

//указываем отображаемую таблицу

dataGrid.DataMember = listTables.SelectedItem.ToString();

//имзеняем заголовок dataGrid

dataGrid.CaptionText = listTables.SelectedItem.ToString();

}

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



Похожие статьи:
- Власть народу - относительные размеры шрифтов
- Установка и конфигурация веб сервера Apache с поддержкой PHP, JSP и MySQL на Windows XP
- XMLHttpRequest (AJAX) - отправка и обработка ответов http-запросов с помощью JavaScript.
- Стиль кодирования на PHP
- Введение в MySQL (используя Perl DBI)
- Целевая аудитория на вашем сайте
- Создание приложения, работающего с XML-данными - 2
- Модуль Apache mod_rewrite
- Пишем правильный online WYSIWYG-редактор
- Скрытие части контента вашей страницы
- Текстовое наполнение сайта
- Как написать свой счетчик посещаемости на Perl
- Oracle и PHP - это очень просто


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |
[0.001]