C# для профессионалов. Том II - [6]

Шрифт
Интервал

после возникновения ошибки продолжает считывание. Имеется возможность определить серьезность ошибки проверки. Если окажется, что это серьезная ошибка, то можно остановить чтение.

Свойство >Schemas класса >XmlValidationReader содержит коллекцию >XmlSchemaCollection, которая находится в пространстве имен >System.Xml.Schema. В этой коллекции находятся предварительно загруженные схемы XSD и XDR, что позволяет выполнить очень быструю проверку, (особенно, если нужно проверить несколько документов), так как схему не нужно каждый раз перезагружать. Для получения выигрыша в производительности и создается объект >XmlSchemaCollection. Метод >Add имеет четыре перегружаемые версии. Можно передать объект на основе >XmlSchema, объект на основе >XmlSchemaCollection, строку >string с пространством имен вместе со строкой >string с URL файла схемы и, наконец, строку >string с пространством имен и объектом на основе >XmlReader, который содержит схему.

Запись XML

Класс >XmlTextWriter позволяет записывать XML в поток, файл или объект >TextWriter. Подобно >XmlTextReader он делает это только вперед, некэшируемым образом. >XmlTextWriter можно конфигурировать различным образом, что позволяет определить такие вещи, как наличие или отсутствие отступов, величину отступа, какой использовать символ кавычки в значениях атрибутов, и поддерживаются ли пространства имен. Свойство >DataTypeNamespace определяет, как строго значения типов преобразуются в текст XML. Для этого свойства допустимо значение >urn:schemas-microsoft-com:datatypes, которое поддерживает типы данных XDR, и другое значение www.w3.org/1999/XMLSchema-data-types, которое является схемой W3C типов данных XSD. Чтобы использовать, например, тип данных >TimeSpan, необходимо будет задать это свойство для типов данных XSD.

Приведем простой пример, чтобы увидеть, как может использоваться класс >TextWriter(пример находится в папке >XMLWriterSample1):

>private void button1_Click(object sender, System.EventArgs e) {

> // измените в соответствии с используемой структурой путей доступа

> string fileName="..\\..\\..\\booknew.xml";

> //создайте XmlTextWriter

> XmlTextWriter tw=new XmlTextWriter(fileName, null);

> // задайте форматирование с отступом

> tw.Formatting=Formatting.Indented;

> tw.WriteStartDocument();

> //Начать создание элементов и атрибутов

> tw.WriteStartElement("book");

> tw.WriteAttributeString("genre", "Mystery");

> tw.WriteAttributeString("publicationdate", "2001");

> tw.WriteAttributeString("ISBN", "123456789");

> tw.WriteElementString("title", "Case of the Missing Cookie");

> tw.WriteStartElement("author");

> tw.WriteElementString("name", "Cookie Monster");

> tw.WriteEndElement();

> tw.WriteElementString("price", "9.99");

> tw.WriteEndElement();

> tw.WriteEndDocument();

> // очистить

> tw.Flush();

> tw.Close();

>}

Создадим новый файл >booknew.xml и добавим новую книгу. Объект >XmlTextWriter заменит существующий файл. Вставку нового элемента или узла в существующий документ рассмотрим позже. Экземпляр объекта >XmlTextWriter создается с помощью объекта >FileStream в качестве параметра. Можно также передать строку с именем файла и путем доступа или объект на основе >TextWriter. При задании свойства >Indenting узлы-потомки будут автоматически делать отступ от предка. Метод >WriteStartDocument() помещает объявление документа. Начинаем запись данных. Сначала идет элемент >book. Затем добавляем атрибуты >genre, >publicationdate и >ISBN. После чего записываем элементы >title, >author, и price. Отметим, что элемент >author имеет элемент-потомок >name.

После нажатия на кнопку будет создан следующий файл >booknew.xml:

>

>

Case of the Missing Cookie

Cookie Monster

9,99

>

Так же как в документе XML, здесь имеются начальный метод и конечный метод (>WriteStartElement и >WriteEndElement). Вложенность контролируется отслеживанием начала и окончания записи элементов и атрибутов. Это можно видеть при добавлении элемента потомка >name к элементу >authors. Отметим, как организуются вызовы методов >WriteStartElement и >WriteEndElement и как это связывается с выведенным документом XML.

В дополнение к >WriteElementString и >WriteAtributeString имеется несколько других специализированных методов записи. Метод >WriteCDate будет выводить раздел >CDate (), взяв текст для записи из параметра. WriteComment записывает комментарий в подходящем формате XML. WriteChars записывает содержимое символьного буфера. Это работает аналогично методу >ReadChars, который был рассмотрен ранее. Оба они используют один и тот же тип параметров. Методу >WriteChar нужен буфер (массив символов), начальная позиция для записи (целое значение) и число символов для записи (целое значение).

Чтение и запись XML с помощью классов, основанных на >XMLReader и XMLWriter, осуществляются очень просто. Далее мы рассмотрим реализацию DOM пространства имен >System.Xml. Это классы на основе >XmlDocument и >XmlNode.

Объектная модель документа в .NET

Реализация объектной модели документа (DOM, Document Object Model) в .NET поддерживает спецификации W3C DOM Level 1 и Core DOM Level 2. DOM реализуется с помощью класса


Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Виртуальная библиотека Delphi

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка баз данных на Visual Basic.NET

Это практическое руководство разработчика программного обеспечения на Visual Basic .NET и ADO.NET, предназначенное для создания приложений баз данных на основе WinForms, Web-форм и Web-служб. В книге описываются практические способы решения задач доступа к данным, с которыми сталкиваются разработчики на Visual Basic .NET в своей повседневной деятельности. Книга начинается с основных сведений о создании баз данных, использовании языка структурированных запросов SQL и системы управления базами данных Microsoft SQL Server 2000.


Исчерпывающее руководство по написанию всплывающих подсказок

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Программное обеспечение встроенных систем. Общие требования к разработке и документированию

Embedded system software. General requirements for development and documentationСтандарт подготовлен в развитие ГОСТ Р ИСО/МЭК 12207-99 «Информационная технология. Процессы жизненного цикла программных средств» с целью учета специфики разработки и документирования программного обеспечения встроенных систем реального времени.


Как пасти котов. Наставление для программистов, руководящих другими программистами

«Как пасти котов» – это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.