C# для профессионалов. Том II | страница 9



(перейти к первому атрибуту) и >MoveToNextAttribute (перейти к следующему атрибуту). Вот пример просмотра атрибутов из >XmlReaderSample4:

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

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

> // к данным

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

> // Создать новый объект TextReader

> XmlTextReader tr = new XmlTextReader(filename);

> // Прочитать узел за раз

> while (tr.Read()) {

>  // проверить, что это элемент NodeType

>  if (tr.NodeType = XmlNodeType.Element) {

>   // если это — элемент, то посмотрим атрибуты

>   for(int i=0; i

>    listBox1.Items.Add(tr.GetAttribute(i));

>   }

>  }

> }

>}

На этот раз мы ищем узлы элементов. Когда такой узел найден, в цикле просматриваются все атрибуты и с помощью метода >GetAttribute значение атрибута загружается в >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. Теперь он выглядит так:

>

>

>