Aracılığıyla paylaş


XmlValidatingReader Oluşturucular

Tanım

XmlValidatingReader sınıfının yeni bir örneğini başlatır.

Aşırı Yüklemeler

XmlValidatingReader(XmlReader)

sınıfının verilen XmlReaderöğesinden döndürülen içeriği doğrulayan yeni bir örneğini XmlValidatingReader başlatır.

XmlValidatingReader(Stream, XmlNodeType, XmlParserContext)

Belirtilen değerlerle sınıfının yeni bir örneğini XmlValidatingReader başlatır.

XmlValidatingReader(String, XmlNodeType, XmlParserContext)

Belirtilen değerlerle sınıfının yeni bir örneğini XmlValidatingReader başlatır.

XmlValidatingReader(XmlReader)

Kaynak:
XmlValidatingReader.cs
Kaynak:
XmlValidatingReader.cs
Kaynak:
XmlValidatingReader.cs

sınıfının verilen XmlReaderöğesinden döndürülen içeriği doğrulayan yeni bir örneğini XmlValidatingReader başlatır.

public:
 XmlValidatingReader(System::Xml::XmlReader ^ reader);
public XmlValidatingReader (System.Xml.XmlReader reader);
new System.Xml.XmlValidatingReader : System.Xml.XmlReader -> System.Xml.XmlValidatingReader
Public Sub New (reader As XmlReader)

Parametreler

reader
XmlReader

XmlReader Doğrulanırken okunacak kaynak. Geçerli uygulama yalnızca XmlTextReader'yi destekler.

Özel durumlar

Belirtilen okuyucu bir XmlTextReaderdeğil.

Örnekler

Aşağıdaki örnek iki belgeyi doğrular.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Schema;
public ref class Sample
{
private:
   static Boolean m_success = true;

public:
   Sample()
   {
      
      // Validate the document using an external XSD schema.  Validation should fail.
      Validate( "notValidXSD.xml" );
      
      // Validate the document using an inline XSD. Validation should succeed.
      Validate( "inlineXSD.xml" );
   }


private:

   // Display the validation error.
   void ValidationCallBack( Object^ /*sender*/, ValidationEventArgs^ args )
   {
      m_success = false;
      Console::WriteLine( "\r\n\tValidation error: {0}", args->Message );
   }

   void Validate( String^ filename )
   {
      m_success = true;
      Console::WriteLine( "\r\n******" );
      Console::WriteLine( "Validating XML file {0}", filename );
      XmlTextReader^ txtreader = gcnew XmlTextReader( filename );
      XmlValidatingReader^ reader = gcnew XmlValidatingReader( txtreader );
      
      // Set the validation event handler
      reader->ValidationEventHandler += gcnew ValidationEventHandler( this, &Sample::ValidationCallBack );
      
      // Read XML data
      while ( reader->Read() )
      {}

      Console::WriteLine( "Validation finished. Validation {0}", (m_success == true ? (String^)"successful!" : "failed.") );
      
      // Close the reader.
      reader->Close();
   }

};

int main()
{
   Sample^ validation = gcnew Sample;
}

using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;

public class Sample
{

  private Boolean m_success = true;

  public Sample ()
  {
      //Validate the document using an external XSD schema.  Validation should fail.
      Validate("notValidXSD.xml");

      //Validate the document using an inline XSD. Validation should succeed.
      Validate("inlineXSD.xml");
  }

  public static void Main ()
  {
      Sample validation = new Sample();
  }

  private void Validate(String filename)
  {
      m_success = true;
      Console.WriteLine("\r\n******");
      Console.WriteLine("Validating XML file " + filename.ToString());
      XmlTextReader txtreader = new XmlTextReader (filename);
      XmlValidatingReader reader = new XmlValidatingReader (txtreader);

      // Set the validation event handler
      reader.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);

      // Read XML data
      while (reader.Read()){}
      Console.WriteLine ("Validation finished. Validation {0}", (m_success==true ? "successful!" : "failed."));

      //Close the reader.
      reader.Close();
  }

  //Display the validation error.
  private void ValidationCallBack (object sender, ValidationEventArgs args)
  {
     m_success = false;
     Console.WriteLine("\r\n\tValidation error: " + args.Message );
  }
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema

public class Sample

  private m_success as Boolean = true

  public sub New ()
      'Validate the document using an external XSD schema.  Validation should fail.
      Validate("notValidXSD.xml") 

      'Validate the document using an inline XSD. Validation should succeed.
      Validate("inlineXSD.xml")
  end sub

  public shared sub Main ()
 
      Dim validation as Sample = new Sample()
  end sub

  private sub Validate(filename as String)

      m_success = true
      Console.WriteLine()
      Console.WriteLine("******")
      Console.WriteLine("Validating XML file " + filename.ToString())
      Dim txtreader as XmlTextReader = new XmlTextReader (filename)
      Dim reader as XmlValidatingReader = new XmlValidatingReader (txtreader)

      ' Set the validation event handler
      AddHandler reader.ValidationEventHandler, AddressOf ValidationCallBack

      ' Read XML data
      while (reader.Read())
      end while
      Console.WriteLine ("Validation finished. Validation {0}", IIf(m_success, "successful!", "failed."))

      'Close the reader.
      reader.Close()
  end sub

  'Display the validation error.
  Private sub ValidationCallBack (sender as object, args as ValidationEventArgs)

     m_success = false
     Console.WriteLine()
     Console.WriteLine("  Validation error: " + args.Message )
  end sub
end class

Örnek aşağıdaki giriş dosyalarını kullanır:

notValidXSD.xml

<?xml version='1.0'?>
<bookstore xmlns="urn:bookstore-schema"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:bookstore-schema books.xsd">
  <book>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
  </book>
  <book genre="novel">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
</bookstore>

books.xsd

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="urn:bookstore-schema"
    elementFormDefault="qualified"
    targetNamespace="urn:bookstore-schema">

 <xsd:element name="bookstore" type="bookstoreType"/>

 <xsd:complexType name="bookstoreType">
  <xsd:sequence maxOccurs="unbounded">
   <xsd:element name="book"  type="bookType"/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="bookType">
  <xsd:sequence>
   <xsd:element name="title" type="xsd:string"/>
   <xsd:element name="author" type="authorName"/>
   <xsd:element name="price"  type="xsd:decimal"/>
  </xsd:sequence>
  <xsd:attribute name="genre" type="xsd:string"/>
 </xsd:complexType>

 <xsd:complexType name="authorName">
  <xsd:sequence>
   <xsd:element name="first-name"  type="xsd:string"/>
   <xsd:element name="last-name" type="xsd:string"/>
  </xsd:sequence>
 </xsd:complexType>

</xsd:schema>

inlineXSD.xml

<store-data>
<!--Inline XSD schema-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <xsd:element name="bookstore" type="bookstoreType"/>
 <xsd:complexType name="bookstoreType">
  <xsd:sequence maxOccurs="unbounded">
   <xsd:element name="book"  type="bookType"/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="bookType">
  <xsd:sequence>
   <xsd:element name="title" type="xsd:string"/>
   <xsd:element name="price"  type="xsd:decimal"/>
  </xsd:sequence>
  <xsd:attribute name="genre" type="xsd:string"/>
 </xsd:complexType>
</xsd:schema>
<!-- end of schema -->

<bookstore>
  <book genre="novel">
    <title>Pride And Prejudice</title>
    <price>19.95</price>
  </book>
</bookstore>
</store-data>

Açıklamalar

Not

sınıf XmlValidatingReader .NET Framework 2.0'da kullanımdan kaldırıldı. sınıfını ve Create yöntemini kullanarak XmlReaderSettings bir doğrulama XmlReader örneği oluşturabilirsiniz. Daha fazla bilgi için başvuru sayfasının Açıklamalar bölümüne XmlReader bakın.

Verilenden XmlReader döndürülen tüm düğümler de bu doğrulayıcı okuyucudan döndürülür, bu nedenle işlemde bilgi kaybı olmaz. Temel okuyucudan döndürülmeyen yeni düğümler bu okuyucu tarafından eklenebilir (örneğin, varsayılan öznitelikler ve varlık başvurusunun alt öğeleri). Belirtilende XmlTextReader ayarlanan tüm özellikler bu doğrulayıcı okuyucu için de geçerlidir. Örneğin, sağlanan okuyucuda WhitespaceHandling.None ayarlanmışsa, bu doğrulayıcı okuyucu boşluğu da yoksayar.

Doğrulama için dış belge türü tanımları (DTD' ler) veya şemalar gerektiğinde, XmlResolver özelliği dış kaynakları çözümlemek için kullanılacak nesneyi ayarlar XmlResolver .

Ayrıca bkz.

Şunlara uygulanır

XmlValidatingReader(Stream, XmlNodeType, XmlParserContext)

Kaynak:
XmlValidatingReader.cs
Kaynak:
XmlValidatingReader.cs
Kaynak:
XmlValidatingReader.cs

Belirtilen değerlerle sınıfının yeni bir örneğini XmlValidatingReader başlatır.

public:
 XmlValidatingReader(System::IO::Stream ^ xmlFragment, System::Xml::XmlNodeType fragType, System::Xml::XmlParserContext ^ context);
public XmlValidatingReader (System.IO.Stream xmlFragment, System.Xml.XmlNodeType fragType, System.Xml.XmlParserContext context);
new System.Xml.XmlValidatingReader : System.IO.Stream * System.Xml.XmlNodeType * System.Xml.XmlParserContext -> System.Xml.XmlValidatingReader
Public Sub New (xmlFragment As Stream, fragType As XmlNodeType, context As XmlParserContext)

Parametreler

xmlFragment
Stream

Ayrıştırmak için XML parçasını içeren akış.

fragType
XmlNodeType

XmlNodeType XML parçasının öğesi. Bu, parçanın ne içerebileceğini belirler (aşağıdaki tabloya bakın).

context
XmlParserContext

XmlParserContext XML parçasının ayrıştırılacak olduğu yer. Bu, kullanılacak, kodlama, ad alanı kapsamı, geçerli xml:langve xml:space kapsamı içerirXmlNameTable.

Özel durumlar

fragType aşağıdaki tabloda listelenen düğüm türlerinden biri değildir.

Açıklamalar

Not

sınıf XmlValidatingReader .NET Framework 2.0'da kullanımdan kaldırıldı. sınıfını ve Create yöntemini kullanarak XmlReaderSettings bir doğrulama XmlReader örneği oluşturabilirsiniz. Daha fazla bilgi için başvuru sayfasının Açıklamalar bölümüne XmlReader bakın.

Bu oluşturucu, verilen dizeyi XML parçası olarak ayrıştırıyor. XML parçası bir öğe veya öznitelikse, iyi biçimlendirilmiş XML belgeleri için kök düzey kurallarını atlayabilirsiniz.

Aşağıdaki tabloda, okuyucunun farklı düğüm türlerinin her birini ayrıştırma şekli ve için geçerli değerler fragType listelenmiştir.

Xmlnodetype Parça İçerebilir
Öğe Geçerli öğe içeriği (örneğin, herhangi bir öğe, açıklama, işleme yönergesi, cdata, metin ve varlık başvurularının birleşimi).
Öznitelik Özniteliğin değeri (tırnak içindeki bölüm).
Belge Xml belgesinin tamamının içeriği; bu, belge düzeyi kurallarını zorunlu kılar.

Okuyucu, akışın kodlamasını belirlemek için aşağıdaki adımları kullanır:

  1. Kodlamayı XmlParserContext.Encoding belirlemek için özelliğini denetler.

  2. Encoding özelliği isenull, okuyucu akışın başında bir bayt sırası işareti olup olmadığını denetler.

  3. Encoding özelliği ise nullve bayt sırası işareti bulunamazsa, okuyucu akışın UTF-8 ile kodlanmış olduğunu varsayar.

Bu okuyucu belge türü tanımını (DTD) kullanarak doğrulayacaksa (yani ValidationType.DTD ValidationType veya ValidationType.Auto olarak ayarlandıysa), XmlParserContext oluşturucuda belirtilen tüm gerekli DocumentType bilgilerini sağlamalıdır.

Not

DTD kullanarak bir parçanın doğrulanması mümkün değildir. Tanımı gereği DTD, doğrulama için belgenin tamamının yüklenmesini gerektirir.

Bu okuyucu XML-Data Azaltılmış (XDR) veya XML Şeması tanım dili (XSD) şemalarını kullanarak doğrulayacaksa, şemaları içeren öğesini belirtmek XmlSchemaCollection için özelliğini kullanın Schemas (yani DocumentType XmlParserContext bilgilerini sağlaması gerekmez).

Ayrıca bkz.

Şunlara uygulanır

XmlValidatingReader(String, XmlNodeType, XmlParserContext)

Kaynak:
XmlValidatingReader.cs
Kaynak:
XmlValidatingReader.cs
Kaynak:
XmlValidatingReader.cs

Belirtilen değerlerle sınıfının yeni bir örneğini XmlValidatingReader başlatır.

public:
 XmlValidatingReader(System::String ^ xmlFragment, System::Xml::XmlNodeType fragType, System::Xml::XmlParserContext ^ context);
public XmlValidatingReader (string xmlFragment, System.Xml.XmlNodeType fragType, System.Xml.XmlParserContext context);
new System.Xml.XmlValidatingReader : string * System.Xml.XmlNodeType * System.Xml.XmlParserContext -> System.Xml.XmlValidatingReader
Public Sub New (xmlFragment As String, fragType As XmlNodeType, context As XmlParserContext)

Parametreler

xmlFragment
String

Ayrıştırmak için XML parçasını içeren dize.

fragType
XmlNodeType

XmlNodeType XML parçasının öğesi. Bu ayrıca parça dizesinin ne içerebileceğini de belirler (aşağıdaki tabloya bakın).

context
XmlParserContext

XmlParserContext XML parçasının ayrıştırılacak olduğu yer. Bu, kullanılacak, kodlama, ad alanı kapsamı, geçerli xml:lang ve xml:space kapsamını içerir NameTable .

Özel durumlar

fragType aşağıdaki tabloda listelenen düğüm türlerinden biri değildir.

Örnekler

Aşağıdaki örnek bir XML parçasını okur. Ad alanı eşleştirmeyi işlemek için bir XmlParserContext ve kullanır XmlNamespaceManager .

using System;
using System.IO;
using System.Xml;

public class Sample
{
    public static void Main()
    {
        XmlTextReader reader = null;

        try
        {
            //Create the XML fragment to be parsed.
            string xmlFrag = "<book> " +
                            "<title>Pride And Prejudice</title>" +
                            "<bk:genre>novel</bk:genre>" +
                            "</book>";

            //Create the XmlNamespaceManager that is used to
            //look up namespace information.
            NameTable nt = new NameTable();
            XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
            nsmgr.AddNamespace("bk", "urn:sample");

            //Create the XmlParserContext.
            XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);

            //Implement the reader.
            reader = new XmlTextReader(xmlFrag, XmlNodeType.Element, context);

            //Parse the XML fragment.  If they exist, display the
            //prefix and namespace URI of each element.
            while (reader.Read())
            {
                if (reader.IsStartElement())
                {
                    if (string.IsNullOrEmpty(reader.Prefix))
                    {
                        Console.WriteLine("<{0}>", reader.LocalName);
                    }
                    else
                    {
                        Console.Write("<{0}:{1}>", reader.Prefix, reader.LocalName);
                        Console.WriteLine(" The namespace URI is " + reader.NamespaceURI);
                    }
                }
            }
        }

        finally
        {
            if (reader != null)
                reader.Close();
        }
    }
} // End class
Imports System.IO
Imports System.Xml

Public Class Sample

    Public Shared Sub Main()
        Dim reader As XmlTextReader = Nothing

        Try
            'Create the XML fragment to be parsed.
            Dim xmlFrag As String = "<book> " & _
                                    "<title>Pride And Prejudice</title>" & _
                                    "<bk:genre>novel</bk:genre>" & _
                                    "</book>"

            'Create the XmlNamespaceManager that is used to
            'look up namespace information.
            Dim nt As New NameTable()
            Dim nsmgr As New XmlNamespaceManager(nt)
            nsmgr.AddNamespace("bk", "urn:sample")

            'Create the XmlParserContext.
            Dim context As New XmlParserContext(Nothing, nsmgr, Nothing, XmlSpace.None)

            'Implement the reader. 
            reader = New XmlTextReader(xmlFrag, XmlNodeType.Element, context)

            'Parse the XML fragment.  If they exist, display the   
            'prefix and namespace URI of each element.
            While reader.Read()
                If reader.IsStartElement() Then
                    If reader.Prefix = String.Empty Then
                        Console.WriteLine("<{0}>", reader.LocalName)
                    Else
                        Console.Write("<{0}:{1}>", reader.Prefix, reader.LocalName)
                        Console.WriteLine(" The namespace URI is " & reader.NamespaceURI)
                    End If
                End If
            End While
        Finally
            If Not (reader Is Nothing) Then
                reader.Close()
            End If
        End Try
    End Sub
End Class

Açıklamalar

Not

sınıf XmlValidatingReader .NET Framework 2.0'da kullanımdan kaldırıldı. sınıfını ve Create yöntemini kullanarak XmlReaderSettings bir doğrulama XmlReader örneği oluşturabilirsiniz. Daha fazla bilgi için başvuru sayfasının Açıklamalar bölümüne XmlReader bakın.

Bu oluşturucu, verilen dizeyi XML parçası olarak ayrıştırıyor. XML parçası bir öğe veya öznitelikse, iyi biçimlendirilmiş XML belgeleri için kök düzey kurallarını atlayabilirsiniz. Bu oluşturucu, 'den ReadInnerXmldöndürülen dizeleri işleyebilir.

Aşağıdaki tabloda, okuyucunun farklı düğüm türlerinin her birini ayrıştırma şekli ve için geçerli değerler fragType listelenmiştir.

Xmlnodetype Parça İçerebilir
Öğe Geçerli öğe içeriği (örneğin, herhangi bir öğe, açıklama, işleme yönergesi, cdata, metin ve varlık başvurularının birleşimi).
Öznitelik Özniteliğin değeri (tırnak içindeki bölüm).
Belge Xml belgesinin tamamının içeriği; bu, belge düzeyi kurallarını zorunlu kılar.

Bu okuyucu belge türü tanımını (DTD) kullanarak doğrulayacaksa (yani ValidationType.DTD ValidationType veya ValidationType.Auto olarak ayarlanmışsa), XmlParserContext oluşturucuda belirtilen tüm gerekli DocumentType bilgilerini sağlamalıdır.

Not

DTD kullanarak bir parçanın doğrulanması mümkün değildir. Tanım gereği DTD, doğrulama için belgenin tamamının yüklenmesini gerektirir.

Bu okuyucu XML-Data Azaltılmış (XDR) veya XML Şeması tanım dili (XSD) şemalarını kullanarak doğrulayacaksa, şemaları içeren öğesini belirtmek XmlSchemaCollection için özelliğini kullanın Schemas (XmlParserContextDocumentType bilgilerini sağlaması gerekmez).

Ayrıca bkz.

Şunlara uygulanır