Поделиться через


Проверка по XDR с помощью XmlValidatingReader

Обновлен: November 2007

Проверка по схеме XDR реализована с использованием проверочных ограничений, определенных в спецификации схемы Microsoft XML Parser (MSXML). Класс XmlValidatingReader использует декларацию пространства имен x-schema: в XML-документе, чтобы определить, что схема, по которой выполняется проверка, является схемой XDR. В следующем примере файл данных имеет корневой элемент <HeadCount xmlns='x-schema:HeadCount.xdr'>.

e87e33y6.alert_note(ru-ru,VS.90).gifПримечание.

Класс XmlValidatingReader в версии .NET Framework, версия 2.0 устарел. Экземпляр XmlReader для проверки можно создать с помощью класса XmlReaderSettings и метода Create. Дополнительные сведения см. в разделе Проверка XML-данных с помощью XmlReader.

Пример

Следующий пример кода создает XmlValidatingReader, принимающий XmlTextReader. Входной файл HeadCount.xml проверяется по файлу схемы XDR HeadCount.xdr.

Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema

public class ValidationSample

      public shared sub Main()

         Dim tr As XmlTextReader = new XmlTextReader("HeadCount.xml")
         Dim vr As XmlValidatingReader = new XmlValidatingReader(tr)

         vr.ValidationType = ValidationType.XDR
         AddHandler vr.ValidationEventHandler, AddressOf ValidationCallback      

         while(vr.Read())
         end while
         Console.WriteLine("Validation finished")
     end sub

      public shared sub ValidationCallBack(sender As object, args as ValidationEventArgs)
         Console.WriteLine("***Validation error")
         Console.WriteLine("Severity:{0}", args.Severity)
         Console.WriteLine("Message:{0}", args.Message)
     end sub
end class
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;

namespace ValidationSample
{
   class Sample
   {
      public static void Main()
      {
         XmlTextReader tr = new XmlTextReader("HeadCount.xml");
         XmlValidatingReader vr = new XmlValidatingReader(tr);

         vr.ValidationType = ValidationType.XDR;
         vr.ValidationEventHandler += new ValidationEventHandler (ValidationHandler);

         while(vr.Read());
         Console.WriteLine("Validation finished");
      }

      public static void ValidationHandler(object sender, ValidationEventArgs args)
      {
         Console.WriteLine("***Validation error");
         Console.WriteLine("\tSeverity:{0}", args.Severity);
         Console.WriteLine("\tMessage  :{0}", args.Message);
      }
   }
}

Ниже описано содержимое проверяемого входного файла HeadCount.xml.

<HeadCount xmlns='x-schema:HeadCount.xdr'>
   <Name>Waldo Pepper</Name>
   <Name>Red Pepper</Name>
</HeadCount>

Ниже выделяется содержимое файла XDR-схемы HeadCount.xdr, по которому выполняется проверка.

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
   <ElementType name="Name" content="textOnly"/>
   <AttributeType name="Bldg" default="2"/>
   <ElementType name="HeadCount" content="eltOnly">
      <element type="Name"/>
      <attribute type="Bldg"/>
   </ElementType>
</Schema>

См. также

Основные понятия

Чтение XML с помощью XmlReader

Другие ресурсы

Использование класса XmlReader