Работа с XML в .NET
Кондратьев Денис
XML это язык разметки, с помощью которого можно описать произвольные данные. На основе XML можно организовать хранение информации и ее обмен, который не зависит от ни от конкретных приложений, ни от платформы, на которой они исполняются. На основе XML построены web-службы. XML широко применяется в web-приложениях для отделения данных от их отображения. Его стандарт утвержден World Wide Web Consortium (W3C) в 1998 году. Для работы с XML применяются XML-парсеры. Существует два основных типа парсеров: Simple API for XML (SAX) и Document Object Model (DOM). SAX основан на курсорах и событиях, возникающих при проходе по узлам XML документа. SAX-прасеру не требуется большого количества памяти для разбора даже больших документов (т.к. ему не нужно загружать в память весь документ), но его существенным ограничением является то, что можно перемещаться по документу только в одном направлении. DOM полностью загружает документ в память и представляет его в виде дерева, поэтому можно произвольно перемещаться по XML-документу. Многие составляющие технологии .NET неразрывно связаны с XML. А значит, XML хорошо поддерживается со стороны Framework Class Library. Классы для работы с XML собраны в пространстве имен System.Xml. В .NET поддерживаются следующие технологии
В этой статье рассматриваются приемы работы с XML в .NET на примере небольшого windows-forms приложения для работы с заказами товаров. Данные о заказах и товарах хранятся в сущностных классах Order и Good. Приложение позволяет создавать новые заказы и добавлять в них товары, сохранять и загружать данные о заказах из XML файла и преобразовывать структуру XML-файла для передачи другой организации. Каждый заказ имеет дату и адрес доставки, а каждый товар - название и стоимость. Заказы и товары в заказах на форме приложения отображаются в виде дерева. Создание XML-документовДля создания новых XML-документов применяется класс XmlTextWriter. Он обеспечивает быстрое небуферизованное создание XML-документов и их запись в файлы, потоки, на консоль и пр. Рассмотрим функцию для сохранения в файл данных о заказах. private void menuItemSave_Click(object sender, System.EventArgs e) Создавая объект XmlTextWriter в его конструктор мы передали имя файла, в который будут сохраняться XML-данные и кодировку. Перегруженная версия конструктора принимает вместо имени файла объект Stream. Таким образом, в конструктор можно передать, например, объект MemoryStream, а потом сохранить XML-данные в БД. Вызов метода WriteStartDocument() записывает строку с объявлением версии XML и типом кодировки. В нашем случаем это будет В результате у нас получается документ такого вида
Класс XmlTextWriter предоставляет большое количество методов для создания XML-документов. Например, функция WriteElementString() создает элемент, содержащий одно текстовое значение, такое как <Дата>01.05.04Дата>. Функция WriteBinHex() массив байтов в шеснадцатиричном виде, а функция WriteComment() вставляет комментарий. Чтение документов с XmlTextReader Класс XmlTextReader обеспечивает быстрое однонаправленное чтение потока XML-данных. Данные могут быть получены из файла, объекта потока Stream или объекта TextReader. XmlTextReader обычно применяется если нужно считать XML документ и получить из него данные. Так как XmlTextReader не загружает весь документ в память, он является наилучшим выбором при обработке больших XML файлов - логов, дампов БД и пр. OpenFileDialog dlg = new OpenFileDialog(); XML-данные, которые читает XmlTextReader, берутся из файла, выбранного пользователем в диалоге. Для подавления пустых строк мы устанавливаем значение None для свойства WhitespaceHandling. Метод Read() производит чтение из потока следующего узла XML-документа. Он возвращает true если удалось считать узел. Обязательно нужно вызвать метод Read перед первым обращением к данным, т.к. в момент инициализации XmlTextReader не содержит никаких данных.
Страница сайта http://silicontaiga.ru
Оригинал находится по адресу http://silicontaiga.ru/home.asp?artId=6224 |