Freigeben über


XmlValidatingReader Konstruktoren

Definition

Initialisiert eine neue Instanz der XmlValidatingReader-Klasse.

Überlädt

XmlValidatingReader(XmlReader)

Initialisiert eine neue Instanz der XmlValidatingReader-Klasse, die den vom angegebenen XmlReader zurückgegebenen Inhalt validiert.

XmlValidatingReader(Stream, XmlNodeType, XmlParserContext)

Initialisiert eine neue Instanz der XmlValidatingReader-Klasse mit den angegebenen Werten.

XmlValidatingReader(String, XmlNodeType, XmlParserContext)

Initialisiert eine neue Instanz der XmlValidatingReader-Klasse mit den angegebenen Werten.

XmlValidatingReader(XmlReader)

Quelle:
XmlValidatingReader.cs
Quelle:
XmlValidatingReader.cs
Quelle:
XmlValidatingReader.cs

Initialisiert eine neue Instanz der XmlValidatingReader-Klasse, die den vom angegebenen XmlReader zurückgegebenen Inhalt validiert.

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)

Parameter

reader
XmlReader

Der XmlReader, aus dem während der Überprüfung gelesen werden soll. Die aktuelle Implementierung unterstützt nur XmlTextReader.

Ausnahmen

Der angegebene Reader ist kein XmlTextReader.

Beispiele

Im folgenden Beispiel werden zwei Dokumente überprüft.

#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

Im Beispiel werden die folgenden Eingabedateien verwendet:

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>

Hinweise

Hinweis

Die XmlValidatingReader -Klasse ist in .NET Framework 2.0 veraltet. Sie können eine Validierungsinstanz erstellen, XmlReader indem Sie die XmlReaderSettings -Klasse und die Create -Methode verwenden. Weitere Informationen finden Sie im Abschnitt Hinweise unter der XmlReader Referenzseite.

Alle knoten, die vom angegebenen XmlReader zurückgegeben werden, werden auch von diesem validierenden Reader zurückgegeben, sodass es im Prozess zu keinem Informationsverlust kommt. Neue Knoten, die nicht vom zugrunde liegenden Reader zurückgegeben werden, können von diesem Reader hinzugefügt werden (z. B. Standardattribute und die untergeordneten Elemente eines Entitätsverweis). Alle eigenschaften, die für den angegebenen festgelegt sind XmlTextReader , gelten auch für diesen überprüfenden Reader. Wenn für den angegebenen Reader beispielsweise WhitespaceHandling.None festgelegt wurde, ignoriert dieser überprüfende Reader auch Leerzeichen.

Wenn externe Dokumenttypdefinitionen (DTDs) oder Schemas für die Validierung erforderlich sind, legt die XmlResolver -Eigenschaft das Objekt fest, das XmlResolver zum Auflösen externer Ressourcen verwendet werden soll.

Weitere Informationen

Gilt für:

XmlValidatingReader(Stream, XmlNodeType, XmlParserContext)

Quelle:
XmlValidatingReader.cs
Quelle:
XmlValidatingReader.cs
Quelle:
XmlValidatingReader.cs

Initialisiert eine neue Instanz der XmlValidatingReader-Klasse mit den angegebenen Werten.

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)

Parameter

xmlFragment
Stream

Der Stream, der das zu analysierende XML-Fragment enthält.

fragType
XmlNodeType

Der XmlNodeType des XML-Fragments. Damit wird der mögliche Inhalt des Fragments bestimmt (siehe Tabelle unten).

context
XmlParserContext

Der XmlParserContext, in dem das XML-Fragment analysiert werden soll. Dazu gehören die zu verwendende XmlNameTable, die Codierung, der Namespacebereich, der aktuelle xml:lang-Bereich und der aktuelle xml:space-Bereich.

Ausnahmen

fragType ist keiner der in der folgenden Tabelle aufgeführten Knotentypen.

Hinweise

Hinweis

Die XmlValidatingReader -Klasse ist in .NET Framework 2.0 veraltet. Sie können eine Validierungsinstanz erstellen, XmlReader indem Sie die XmlReaderSettings -Klasse und die Create -Methode verwenden. Weitere Informationen finden Sie im Abschnitt Hinweise unter der XmlReader Referenzseite.

Dieser Konstruktor analysiert die angegebene Zeichenfolge als XML-Fragment. Wenn das XML-Fragment ein Element oder Attribut ist, können Sie die Regeln auf Stammebene für wohlgeformte XML-Dokumente umgehen.

In der folgenden Tabelle sind gültige Werte für fragType und wie der Leser jeden der verschiedenen Knotentypen analysiert.

XmlNodeType Fragment kann enthalten
Element Alle gültigen Elementinhalte (z. B. eine beliebige Kombination aus Elementen, Kommentaren, Verarbeitungsanweisungen, cdata, Text und Entitätsverweisen).
attribute Der Wert eines Attributs (der Teil innerhalb der Anführungszeichen).
Dokument Der Inhalt eines gesamten XML-Dokuments; Dadurch werden Regeln auf Dokumentebene erzwungen.

Der Reader verwendet die folgenden Schritte, um die Codierung des Datenstroms zu bestimmen:

  1. Überprüft die XmlParserContext.Encoding -Eigenschaft, um die Codierung zu bestimmen.

  2. Wenn die Encoding -Eigenschaft ist null, sucht der Leser am Anfang des Datenstroms nach einer Bytereihenfolgemarke.

  3. Wenn die Encoding -Eigenschaft ist nullund keine Bytereihenfolgenmarkierung gefunden wird, geht der Reader davon aus, dass der Stream in UTF-8 codiert ist.

Wenn dieser Reader mithilfe der Dokumenttypdefinition (Document Type Definition, ValidationType DTD) überprüft (d. h. auf ValidationType.DTD oder ValidationType.Auto festgelegt ist), muss der XmlParserContext im Konstruktor angegebene alle erforderlichen DocumentType-Informationen bereitstellen.

Hinweis

Es ist nicht möglich, ein Fragment mithilfe einer DTD zu überprüfen. Per Definition erfordert eine DTD, dass ein gesamtes Dokument zur Überprüfung geladen wird.

Wenn dieser Reader mithilfe von XDR-Schemas (XML-Data Reduced) oder XSD-Schemas (XML Schema Definition Language) überprüft, verwenden Sie die Schemas -Eigenschaft, um das anzugeben, XmlParserContext das XmlSchemaCollection die Schemas enthält (d. a. die DocumentType-Informationen müssen nicht angegeben werden).

Weitere Informationen

Gilt für:

XmlValidatingReader(String, XmlNodeType, XmlParserContext)

Quelle:
XmlValidatingReader.cs
Quelle:
XmlValidatingReader.cs
Quelle:
XmlValidatingReader.cs

Initialisiert eine neue Instanz der XmlValidatingReader-Klasse mit den angegebenen Werten.

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)

Parameter

xmlFragment
String

Die Zeichenfolge, die das zu analysierende XML-Fragment enthält.

fragType
XmlNodeType

Der XmlNodeType des XML-Fragments. Damit wird auch der mögliche Inhalt der Fragmentzeichenfolge bestimmt (siehe Tabelle unten).

context
XmlParserContext

Der XmlParserContext, in dem das XML-Fragment analysiert werden soll. Dazu gehören die zu verwendende NameTable, die Codierung, der Namespacebereich, der aktuelle xml:lang-Bereich und der aktuelle xml:space-Bereich.

Ausnahmen

fragType ist keiner der in der folgenden Tabelle aufgeführten Knotentypen.

Beispiele

Im folgenden Beispiel wird ein XML-Fragment gelesen. Es verwendet ein XmlParserContext und dessen XmlNamespaceManager , um den Namespaceabgleich zu verarbeiten.

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

Hinweise

Hinweis

Die XmlValidatingReader -Klasse ist in .NET Framework 2.0 veraltet. Sie können eine Validierungsinstanz erstellen, XmlReader indem Sie die XmlReaderSettings -Klasse und die Create -Methode verwenden. Weitere Informationen finden Sie im Abschnitt Hinweise unter der XmlReader Referenzseite.

Dieser Konstruktor analysiert die angegebene Zeichenfolge als XML-Fragment. Wenn das XML-Fragment ein Element oder Attribut ist, können Sie die Regeln auf Stammebene für wohlgeformte XML-Dokumente umgehen. Dieser Konstruktor kann von zurückgegebene ReadInnerXmlZeichenfolgen verarbeiten.

In der folgenden Tabelle sind gültige Werte für fragType und wie der Leser jeden der verschiedenen Knotentypen analysiert.

XmlNodeType Fragment kann enthalten
Element Alle gültigen Elementinhalte (z. B. eine beliebige Kombination aus Elementen, Kommentaren, Verarbeitungsanweisungen, cdata, Text und Entitätsverweisen).
attribute Der Wert eines Attributs (der Teil innerhalb der Anführungszeichen).
Dokument Der Inhalt eines gesamten XML-Dokuments; Dadurch werden Regeln auf Dokumentebene erzwungen.

Wenn dieser Reader mithilfe der Dokumenttypdefinition (Document Type Definition, ValidationType DTD) überprüft (d. h. auf ValidationType.DTD oder ValidationType.Auto festgelegt ist), muss der XmlParserContext im Konstruktor angegebene alle erforderlichen DocumentType-Informationen bereitstellen.

Hinweis

Es ist nicht möglich, ein Fragment mithilfe von DTD zu überprüfen. Die DTD erfordert per Definition, dass ein gesamtes Dokument zur Überprüfung geladen wird.

Wenn dieser Reader mithilfe von XDR-Schemas (XML-Data Reduced) oder XSD-Schemas (XML Schema Definition Language) überprüft, verwenden Sie die Schemas -Eigenschaft, um das anzugeben, das XmlSchemaCollection die Schemas enthält (die XmlParserContext DocumentType-Informationen müssen nicht angegeben werden).

Weitere Informationen

Gilt für: