>
> // если это — элемент, то посмотрим атрибуты
> 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
. Теперь он выглядит так:
>
>
>
>
> 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:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> ЕlementType>
>
>
>
>
Отметим, что имеются два атрибута в файле XML, которые не определены в схеме. Если посмотреть внимательно, то можно увидеть что в схеме нет атрибутов >publication-date
и ISBN из элемента >book
. Мы сделали это, чтобы показать, что проверка действительно выполняется. Можно использовать для подтверждения этого следующий код. Необходимо будет добавить в класс >using System.Xml.Schema
. Весь код доступен в >XMLReaderSample5
:
>protected void button1_Click (object sender, System.EventArgs e) {