// проверить, что это элемент NodeType
if (tr.NodeType = XmlNodeType.Element) {
// если это — элемент, то посмотрим атрибуты
for(int i=0; i<tr.AttributeCount; i++) {
listBox1.Items.Add(tr.GetAttribute(i));
}
}
}
}
На этот раз мы ищем узлы элементов. Когда такой узел найден, в цикле просматриваются все атрибуты и с помощью метода GetAttribute
значение атрибута загружается в listbox
.
Проверка
Если нужно проверить документ XML, используйте класс XmlValidatingReader
. Он обладает всей функциональностью класса XmlTextReader
(оба реализуют XmlReader
, но XmlValidatingReader
добавляет свойство ValidationType
, свойство Schemes
и свойство SchemaType
). Свойство ValidationType
задается как тип проверки, которую желательно выполнить. Допустимые значения этого свойства следующие:
Значение свойства | Описание |
---|---|
Auto | Если в <!DOCTYPE...> объявлен 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
. Теперь он выглядит так:
<?xml version='1.0'?>
<!-- Этот файл представляет фрагмент базы данных учета запасов книжного склада -- >
<bookstore xmlns='x-schema:books.xdr'>
<book genre='autobiography' publicationdate='1981' ISBN='1-861003-11-0'>
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre='novel' publicationdate='1967' ISBN='0-201-63361-2'>
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre='philosophy' publicationdate='1991' ISBN='1-861001-57-6'>
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
Отметим, что элемент bookstore
имеет теперь атрибут xmlns='x- schema:books.xdr'
. Это будет указывать на следующую схему XDR:
<?xml version='1.0'?>
<Schema xmlns='urn:schemas-microsoft-com:xml-data' xmlns:dt='urn:schemas-microsoft- com:datatypes'>
<ElementType name='first-name' content='textOnly'/>
<ElementType name='last-name' content='textOnly'/>
<ElementType name='name' content='textOnly'/>
<ElementType name='price' content='textOnly' dt:type='fixed.14.4'/>
<ElementType name='author' content='eltOnly' order='one'>
<group order='seq'>
<element type='name'/>