共用方式為


使用多個結構描述進行 XML 結構描述 (XSD) 驗證

您可以使用 XmlValidatingReader,針對多個結構描述的 XML 結構描述定義語言 (XSD) 結構描述來驗證 XML 文件。

Note注意事項

XmlValidatingReader 類別在 Microsoft .NET Framework 2.0 版本 中已過時。您可以使用 XmlReaderSettings 類別和 Create 方法,來建立驗證 XmlReader 執行個體。如需詳細資訊,請參閱使用 XmlReader 驗證 XML 資料

範例

下列程式碼範例所建立的 XmlValidatingReader,會將檔案資料流 (Mixed.xml) 當做輸入,並對多個結構描述來源驗證 XML 片段。XmlValidatingReader 建構函式會採用 XML 片段的資料流、XmlNodeTypeXmlParserContext

Note注意事項

在下列範例中,最上層的項目不會進行驗證。如果 ValidationType 設為 ValidationType.Schema,則 XmlValidatingReader 會針對根項目產生警告。

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

Namespace ValidationSample
    
   Class Sample
      
      Public Shared Sub Main()
         Dim stream As New FileStream("Mixed.xml", FileMode.Open)
         Dim vr As New XmlValidatingReader(stream, XmlNodeType.Element, Nothing)
         
         vr.Schemas.Add(Nothing, "Book.xsd")
         vr.Schemas.Add(Nothing, "Tape.xsd")
         vr.ValidationType = ValidationType.Schema
         AddHandler vr.ValidationEventHandler, AddressOf ValidationHandler
         
         While vr.Read()
         End While
         Console.WriteLine("Validation finished")
      End Sub
      ' Main
      
      Public Shared Sub ValidationHandler(sender As Object, args As ValidationEventArgs)
         Console.WriteLine("***Validation error")
         Console.WriteLine("Severity:{0}", args.Severity)
         Console.WriteLine("Message:{0}", args.Message)
      End Sub
      ' ValidationHandler
   End Class
   ' Sample
End Namespace
' ValidationSample
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;

namespace ValidationSample
{
   class Sample
   {
      public static void Main()
      {
         FileStream stream = new FileStream("Mixed.xml", FileMode.Open);
         XmlValidatingReader vr = new XmlValidatingReader(stream, XmlNodeType.Element, null);

         vr.Schemas.Add(null, "Book.xsd");
         vr.Schemas.Add(null, "Tape.xsd");
         vr.ValidationType = ValidationType.Schema;
         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);
      }
   }
}

以下列出了要進行驗證 XML 結構描述檔案 (Book.xsd) 的內容。

<xs:schema xmlns="urn:bookstore-schema"
         targetNamespace="urn:bookstore-schema"
         xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="book">
      <xs:complexType>
         <xs:simpleContent>
            <xs:extension base="xs:string">
               <xs:attribute name="price" type="xs:decimal" />
            </xs:extension>
         </xs:simpleContent>
      </xs:complexType>
   </xs:element>
</xs:schema>

以下列出了要進行驗證 XML 結構描述檔案 (Tape.xsd) 的內容。

<xs:schema xmlns="urn:tapestore-schema"
         targetNamespace="urn:tapestore-schema"
         xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="tape" type="xs:string"/>
</xs:schema>

以下列出了 XML 資料流 (Mixed.xml) 的內容,該檔案內含要進行驗證的 XML 內容片段。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:dvdstore-schema" targetNamespace="urn:dvdstore-schema">
    <xs:element name="dvd" type="xs:string" />
  </xs:schema>
  <pb:book price="7.99" xmlns:pb="urn:bookstore-schema">The Autobiography of Benjamin Franklin</pb:book>
  <pd:dvd xmlns:pd="urn:dvdstore-schema">The Godfather</pd:dvd>
  <pt:tape xmlns:pt="urn:tapestore-schema" xsi:schemaLocation="urn:tapestore-schema tape.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Il Postino</pt:tape>

請參閱

概念

使用 XmlReader 讀取 XML

其他資源

使用 XmlReader 類別