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

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

значение атрибута загружается в >listbox.

Проверка

Если нужно проверить документ XML, используйте класс >XmlValidatingReader. Он обладает всей функциональностью класса >XmlTextReader (оба реализуют >XmlReader, но >XmlValidatingReader добавляет свойство >ValidationType, свойство >Schemes и свойство >SchemaType). Свойство >ValidationType задается как тип проверки, которую желательно выполнить. Допустимые значения этого свойства следующие:

Значение свойстваОписание
>AutoЕсли в > объявлен DTD, он и будет загружаться и обрабатываться. Атрибуты по умолчанию и общие сущности, определенные в DTD, станут доступными. Если найден атрибут XSD >schemalocation, то загружается и обрабатывается XSD, при этом все атрибуты по умолчанию, определенные в схеме, будут возвращены. Если найдено пространство имен с префиксом MSXML >x-schema:, загрузится и обработается схема XDR, все атрибуты, определенные по умолчанию, возвратятся.
>DTDПроверка согласно правилам DTD.
>SchemaПроверка согласно правилам XSD.
>XDRПроверка согласно правилам XDR.
>NoneПроверка не выполняется.

Если свойство задано, то должен быть назначен обработчик событий >ValidationEventHandler. Событие инициируется, когда случается ошибка проверки. На ошибку можно отреагировать любым подходящим образом. Рассмотрим пример. Добавим пространство имен схемы XDR (XML Data Reduced — приведенные данные XML) к файлу >books.xml и назовем этот файл >booksVal.xml. Теперь он выглядит так:

>

>

>

>  The Autobiography of Benjamin Franklin

>   Benjamin

>   Franklin

>  

8.99

>  The Confidence Man

>  

>   Herman

>   Melville

>  

11.99

>  The Gorgias

>  

>   Plato

>  

9.99

>

Отметим, что элемент >bookstore имеет теперь атрибут >xmlns="x-schema:books.xdr". Это будет указывать на следующую схему XDR:

>

>

>  

>  

>  

>  

>  

>  

>  

>  

>  

>  

>

Отметим, что имеются два атрибута в файле XML, которые не определены в схеме. Если посмотреть внимательно, то можно увидеть что в схеме нет атрибутов >publication-date и ISBN из элемента >book. Мы сделали это, чтобы показать, что проверка действительно выполняется. Можно использовать для подтверждения этого следующий код. Необходимо будет добавить в класс >using System.Xml.Schema. Весь код доступен в >XMLReaderSample5:

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

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

> string filename = "..\\..\\..\\booksVal.xml";

> XmlTextReader tr = new XmlTextReader(filename);

> XmlValidatingReader trv=new XmlValidatingReader(tr);

> // Задать тип проверки

> trv.ValidationType=ValidationType.xdr;

> // Добавить обработчик события проверки

> trv.ValidationEventHandler += new ValidationEventHandler(this.ValidationEvent);

> // Считываем узел за раз

> while(trv.Read()) {

>  if (trv.NodeType == XmlNodeType.Text) listBox1.Items.Add(trv.Value);

> }

>}


>public void ValidationEvent(object sender, ValidationEventArgs args) {

> MessageBox.Show(args.Message);

>}

Мы создаем >XmlTextReader для передачи в >XmlValidationReader. Когда >XmlValidationReader trv создан, можно использовать его по большей части так же, как >XmlTextReader в предыдущих примерах. Различия состоят в том что в данном случае определен атрибут >ValidationType и добавлен >ValidationEventHandler. Каждый раз при возникновении ошибки проверки инициируется >ValidationEvent. Затем можно будет обработать ошибку проверки любым приемлемым способом. В данном примере выводится >MessageBox с описанием ошибки. Вот как выглядит >MessageBox, когда инициируется >ValdationEvent.

В отличие от некоторых синтаксических анализаторов >XmlValidationReader


Рекомендуем почитать
Язык PL/SQL

В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.


Пишем драйвер Windows на ассемблере

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


Язык программирования С# 2005 и платформа .NET 2.0.

В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML.


Вариации на тему STL. Адаптер обобщенного указателя на функцию-член класса

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


Информационная технология. Руководство по управлению документированием программного обеспечения

ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИИнформационная технологияРУКОВОДСТВО ПО УПРАВЛЕНИЮ ДОКУМЕНТИРОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯInformation technology. Guidelines for the management of software documentationИздание официальноеДата введения 1994-07-01ГОССТАНДАРТ РОССИИ Москва© Издательство стандартов, 1994.


Самоучитель UML

Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы.