Компиляция схемы XmlSchemaCollection

Объект XmlSchemaCollection является кэшем или библиотекой, где можно хранить и проверять схемы XDR и XSD. Использование XmlSchemaCollection повышает производительность, поскольку схемы кэшируются в памяти и их не нужно каждый раз получать из файла или по URL-адресу.

Примечание.

Класс XmlSchemaCollection хранит и схемы XDR, и схемы XML, но все методы и свойства, которые принимают или возвращают объект XmlSchema, поддерживают только схемы XML.

Внимание

Класс XmlSchemaCollection устарел и заменен классом XmlSchemaSet. Дополнительные сведения о классе XmlSchemaSet см. в руководстве по использованию XmlSchemaSet для компиляции схемы.

Добавление схем в коллекцию

Схемы загружаются в коллекцию с помощью метода Add класса XmlSchemaCollection, и одновременно с этим схема связывается с URI пространства имен. Для схем XML URI-код пространства имен обычно является целевым пространством имен для схемы. Для схем XDR URI-код пространства имен будет задаваться во время добавления схемы в коллекцию.

Проверка наличия схемы в коллекции

Наличие схемы в коллекции вы можете проверить с помощью метода Contains. Метод Contains принимает объект XmlSchema (только для схем XML) или строку, представляющую URI пространства имен, связанного со схемой (для схем XML и XDR).

Получение схемы из коллекции

Схему из коллекции можно получить с помощью свойства Item. Свойство Item принимает строку, представляющую URI пространства имен, связанного со схемой (обычно это целевое пространство имен), и возвращает объект XmlSchema. Свойство Item применимо только к схемам XML. Для схем XDR всегда возвращается ссылка NULL, поскольку для них нет доступной модели объектов.

Проверка XML-документов с помощью XmlSchemaCollection

Чтобы проверить экземпляр XML-документа с помощью XmlSchemaCollection, создайте объект XmlSchemaCollection, добавьте в эту коллекцию схемы и задайте свойство Schemas для объекта XmlValidatingReader, чтобы назначить созданную коллекцию XmlSchemaCollection для объекта XmlValidatingReader.

Улучшенная производительность

Если вы проверяете несколько документов по одной схеме, мы рекомендуем использовать объект XmlSchemaCollection, поскольку его производительность выше благодаря кэшированию схем в памяти.

Следующий пример кода создает объект XmlSchemaCollection, добавляет схемы в коллекцию и задает свойство Schemas.

Dim tr as XmlTextReader = new XmlTextReader("Books.xml")  
Dim vr as XmlValidatingReader = new XmlValidatingReader(tr)  
Dim xsc as XmlSchemaCollection = new XmlSchemaCollection  
xsc.Add("urn:bookstore-schema", "Books.xsd")  
vr.Schemas.Add(xsc)  
XmlTextReader tr = new XmlTextReader("Books.xml");  
XmlValidatingReader vr = new XmlValidatingReader(tr);  
XmlSchemaCollection xsc = new XmlSchemaCollection();  
xsc.Add("urn:bookstore-schema", "Books.xsd");
vr.Schemas.Add(xsc);  

См. также