Главная · Карта сайта · Поиск · Статьи · Компьютерные курсы · Обучающие программы · Открытые проекты · Веб-программирование · Создание интернет-сайта · Полезные ссылки · Глоссарий · Контакты · Декабрь 09 2016 22:13:50
Последнее опубликованное

Что такое Model-View-Controller
Pattern Model-View-Controller

Как создать свой веб-сайт
Как создать свой сайт в интернете

Разное
Статистика

Основы программирования. Работа с XML


Содержание курса

Отчеты в виде XML легко конвертировать во что-нибудь полезное...

Шаг 10. База данных и XML

Как следует из заголовка, речь пойдет о языке разметки данных XML. Точнее даже не о нем, а о том, как на практике применить теоретические знания, изложенные здесь. Именно XML является тем универсальным форматом, который легко трансформировать во множество полезных прикладных документов. Документы Microsoft Office тому хороший пример. Я считаю XML одной из самых гениальных разработок в IT направлении, и, кстати, это объясняет, почему XML так прост. Но, тем не менее, здесь речи не пойдет о том, как сформировать документ в “офисном” формате. Я лишь расскажу и покажу, как построить XML на основе результата запроса к базе данных в произвольном виде.

Описание задачи

Описание задачи полностью совпадает с описанием задачи предыдущего шага, с той лишь разницей, что мы будем использовать не просто текстовые файлы, а XML файлы.

Описание реализации

В статье о способах обработки XML я указал, что существует два основных способа работы с XML: DOM - механизм, основанный на формировании иерархических структур, соответствующих разметке XML в оперативной памяти, и SAX – технологии, ориентированной на алгоритмы последовательного чтения/записи XML. Именно по этой причине далее будет рассмотрено не по одной программе на языках программирования C# и VB.NET, а по две, каждая из которых реализует один из этих способов. Работа с классами последовательного чтения/записи XML похожа на работу с текстовыми файлами и также должна производиться в контексте оператора using. При работе с DOM-объектами, манипуляции с файлами скрыты в реализации соответствующих сервисов, что гарантирует корректное взаимодействие с разделяемыми ресурсами операционной системы и не требует от программиста каких-то дополнительных усилий. В целом с DOM работать намного удобней и наглядней, чем с SAX-ориентированными сервисами, но излишний расход памяти и не всегда приемлемое быстродействие довольно часто заставляют выбирать именно SAX. В качестве файла с параметрами соединения и текстом запроса будем использовать уже не файл config.txt, а config.xml, с содержимым которого желательно ознакомиться сразу, дабы не возникало лишних вопросов в ходе анализа исходного кода программ. Ссылка на config.xml расположена чуть ниже.

Фрагмент кода

Обратите внимание на то, что в процессе работы с объектами DOM нужно постоянно применять приведение типов, поскольку многие методы принимают в качестве аргументов и возвращают в качестве результата ссылки на базовый класс XmlNode, хотя на самом деле используются экземпляры производных от него классов. Элемент документа XmlElement, атрибут элемента XmlAttribute, текст XmlText - все они являются непосредственными или через несколько поколений наследниками XmlNode. Что делать с аргументом, или какого типа возвращать результат, сервисы DOM решают внутри своих методов. Для приведения типов в языке C# используется аналогичный преобразованию типов синтаксис (ToTypeName), а в языке VB.NET для этих целей используется оператор CType. Более подробно про преобразование и приведение типов можно узнать здесь.

Итак, чтение настроек соединения с базой данных и SQL запроса из XML файла посредством интерфейсов DOM:

C#:
 XmlDocument _Config = new XmlDocument();
 _Config.Load(_ConfigFileName);

 XmlElement _ConnectionElement = (XmlElement)_Config.DocumentElement.SelectSingleNode("CONNECTION");
 if (_ConnectionElement != null)
     _ConnectionString = _ConnectionElement.InnerText;

 XmlElement _SQLElement = (XmlElement)_Config.DocumentElement.SelectSingleNode("SQL");
 if (_SQLElement != null)
     _SQL = _SQLElement.InnerText;
VB.NET:
Dim _Config As XmlDocument = New XmlDocument()
 _Config.Load(_ConfigFileName)

Dim _ConnectionElement As XmlElement = CType(_Config.DocumentElement.SelectSingleNode("CONNECTION"), XmlElement)
 If Not _ConnectionElement Is Nothing Then _ConnectionString = _ConnectionElement.InnerText

Dim _SQLElement As XmlElement = CType(_Config.DocumentElement.SelectSingleNode("SQL"), XmlElement)
 If Not _SQLElement Is Nothing Then _SQL = _SQLElement.InnerText

А здесь то же самое с использованием технологии SAX:

C#:
using (XmlTextReader _reader = new XmlTextReader(_ConfigFileName))
 {
  while (_reader.Read())
         if (_reader.NodeType == XmlNodeType.Element)
             if (_reader.Name.Equals("CONNECTION", StringComparison.OrdinalIgnoreCase))
                {_reader.Read(); _ConnectionString = _reader.Value;}
            else if (_reader.Name.Equals("SQL", StringComparison.OrdinalIgnoreCase))
                {_reader.Read(); _SQL = _reader.Value;}
 }
VB.NET:
 Using _reader As XmlTextReader = New XmlTextReader(_ConfigFileName)
   While _reader.Read()
     If _reader.NodeType = XmlNodeType.Element Then
        If _reader.Name.Equals("CONNECTION", StringComparison.OrdinalIgnoreCase) Then
           _reader.Read()
           _ConnectionString = _reader.Value
        ElseIf _reader.Name.Equals("SQL", StringComparison.OrdinalIgnoreCase) Then
           _reader.Read()
           _SQL = _reader.Value
        End If
     End If
   End While
 End Using

Полные версии алгоритмов

DOM:
На языке C#.
На языке VB.NET.

SAX:
На языке C#.
На языке VB.NET.

Тестовый набор данных

Файл базы данных Microsoft Access Data.rar (Data.mdb).
Файл с настройками соединения и SQL запросом Config_xml.rar (Config.xml).

Самостоятельно

На самом деле в примере этого шага разумней всего было бы реализовать чтение параметров запроса из файла config.xml с помощью технологии DOM, а запись результата осуществить последовательно через программные интерфейсы SAX компонентов. Предлагаю реализовать эту идею, скомбинировав нужным образом код примеров. Также, предлагаю более детально изучить варианты применения XML и настроить конвертацию результата запроса в Microsoft Excel.

Резюме

Если с предыдущей версией программы вам удалось изобрести что-либо полезное, то повторить и улучшить результат с текущей версией не составит особого труда...

Далее: Работа с базой данных и первое консольное приложение



Компьютерные курсы и курсы программирования
Основы программирования

Курс для начинающих программистов на C# и VB.NET.

SQL 25™

Построение SQL запросов и работа с базой данных.

C# Quick Guide™

Программирование на C#. Краткое руководство.

RegEx

Применение регулярных выражений.

Plug-in архитектура

Примеры программной Plug-in архитектуры.

XML и его расширения

Язык разметки XML и его расширения с примерами.

HTML и разметка гипертекста

Языки HTML, XHTML и CSS с примерами разметки.

Основы веб-дизайна

Основы веб-дизайна: решения типовых задач верстки.

Программирование на PHP

Руководство по программированию на PHP для начинающих.

Справочные материалы

Шаблоны проектирования
Каталог шаблонов проектирования программных компонентов.

Рефакторинг кода
Каталог приемов рефакторинга программного кода.

Гость
Имя

Пароль



Забыли пароль?
Запросите новый здесь
.
Coding Craft. Все права защищены © 2011. Проект Инициативного Народного Фронта Образования - ИНФО-проект.