使用 XmlValidatingReader 根据 XDR 进行验证

XML 数据缩减 (XDR) 架构验证使用 Microsoft XML 分析器 (MSXML) 架构规范中定义的有效性约束来实现。 XmlValidatingReader 类使用 XML 文档中的 x-schema: 命名空间声明来确定验证所依据的架构是 XDR 架构。 在下面的示例中,数据文件的根元素是 <HeadCount xmlns='x-schema:HeadCount.xdr'>。

注意注意

XmlValidatingReader 类在 .NET Framework 2.0 版 中已过期。您可以使用 XmlReaderSettings 类和 Create 方法创建一个验证 XmlReader 实例。有关更多信息,请参见使用 XmlReader 验证 XML 数据

示例

下面的代码示例创建一个接受 XmlTextReaderXmlValidatingReader。 根据 XDR 架构文件 HeadCount.xdr 对输入文件 HeadCount.xml 进行验证。

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>

请参见

概念

用 XmlReader 读取 XML

其他资源

使用 XmlReader 类