Freigeben über


XmlValidatingReader.SchemaType-Eigenschaft

Ruft ein Objekt vom Typ Schema ab.

Namespace: System.Xml
Assembly: System.Xml (in system.xml.dll)

Syntax

'Declaration
Public ReadOnly Property SchemaType As Object
'Usage
Dim instance As XmlValidatingReader
Dim value As Object

value = instance.SchemaType
public Object SchemaType { get; }
public:
property Object^ SchemaType {
    Object^ get ();
}
/** @property */
public Object get_SchemaType ()
public function get SchemaType () : Object

Eigenschaftenwert

XmlSchemaDatatype, XmlSchemaSimpleType oder XmlSchemaComplexType, abhängig davon, ob der Knotenwert ein integrierter XSD (XML Schema Definition Language)-Typ oder ein benutzerdefinierter simpleType bzw. complexType ist. NULL (Nothing in Visual Basic), wenn der aktuelle Knoten über keinen Schematyp verfügt.

Hinweise

Hinweis

Die XmlValidatingReader-Klasse ist in Microsoft .NET Framework, Version 2.0 veraltet. Sie können eine Instanz eines validierenden XmlReader mithilfe der XmlReaderSettings-Klasse und der Create-Methode erstellen. Weitere Informationen finden Sie unter Validieren von XML-Daten mit "XmlReader".

Der Benutzer muss den zurückgegebenen Typ überprüfen. Beispiel:

object obj = vreader.SchemaType;
 if (obj is XmlSchemaType)
 {
   XmlSchemaType st = (XmlSchemaType)obj;
   // use XmlSchemaType object
 }
 if (obj is XmlSchemaDatatype)
 {
   XmlSchemaDatatype sd = (XmlSchemaDatatype)obj;
   Type vt = sd.ValueType;
   // use XmlSchemaDatatype object
       }

Bei der Validierung eines XSD (XML Schema Definition)-Schemas entspricht der XmlSchemaType oder XmlSchemaDatatype dem aktuellen Element, das gelesen wird. Bei der DTD (Dokumenttypdefinition)-Validierung gibt diese Eigenschaft NULL (Nothing in Visual Basic) zurück.

XmlSchemaDatatype wird zurückgegeben, wenn das aktuelle Element oder Attribut ein einfacher Typ ist, der besondere Validierungseinschränkungen wie Minimum und Maximum für einfache Typen angeben kann.

XmlSchemaSimpleType wird zurückgegeben, wenn das aktuelle Element oder Attribut ein benutzerdefinierter simpleType ist.

XmlSchemaComplexType wird zurückgegeben, wenn das aktuelle Element ein benutzerdefinierter complexType ist. Dieser Typ kann nicht von Attributen zurückgegeben werden.

Hinweis

Wenn ValidationType auf ValidationType.None festgelegt wurde, werden keine Datentypinformationen aus Schemas oder DTDs bereitgestellt.

Warnung

Nach dem Aufruf von Close gibt SchemaType NULL zurück.

Beispiel

Im folgenden Beispiel werden die Typinformationen für die einzelnen Elemente im XML-Dokument angezeigt.

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

public class Sample

  public shared sub Main()
  
  Dim tr as XmlTextReader = new XmlTextReader("booksSchema.xml")
  Dim vr as XmlValidatingReader = new XmlValidatingReader(tr)
 
  vr.Schemas.Add(nothing, "books.xsd")
  vr.ValidationType = ValidationType.Schema
  AddHandler vr.ValidationEventHandler, AddressOf ValidationCallBack

  while(vr.Read())

    if(vr.NodeType = XmlNodeType.Element)
    
      if (vr.SchemaType.ToString() = "System.Xml.Schema.XmlSchemaComplexType")
        Dim sct as XmlSchemaComplexType = CType(vr.SchemaType,XmlSchemaComplexType)
        Console.WriteLine("{0}({1})", vr.Name, sct.Name)
      else      
        Dim value as object = vr.ReadTypedValue()
        Console.WriteLine("{0}({1}):{2}", vr.Name, value.GetType().Name, value)    
      end if
    end if
  end while
  end sub

  private 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;

public class Sample{

  public static void Main(){
  
  XmlTextReader tr = new XmlTextReader("booksSchema.xml");
  XmlValidatingReader vr = new XmlValidatingReader(tr);
 
  vr.Schemas.Add(null, "books.xsd");
  vr.ValidationType = ValidationType.Schema;
  vr.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
 
  while(vr.Read()){
    if(vr.NodeType == XmlNodeType.Element){
      if(vr.SchemaType is XmlSchemaComplexType){
        XmlSchemaComplexType sct = (XmlSchemaComplexType)vr.SchemaType;
        Console.WriteLine("{0}({1})", vr.Name, sct.Name);
      }
      else{
        object value = vr.ReadTypedValue();
        Console.WriteLine("{0}({1}):{2}", vr.Name, value.GetType().Name, value);
      }
    }
  }
 }

  private static void ValidationCallBack (object sender, ValidationEventArgs args){
    Console.WriteLine("***Validation error");
    Console.WriteLine("\tSeverity:{0}", args.Severity);
    Console.WriteLine("\tMessage  :{0}", args.Message);
  }
}
#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Schema;

public ref class Sample
{
private:
   static void ValidationCallBack( Object^ sender, ValidationEventArgs^ args )
   {
      Console::WriteLine( "***Validation error" );
      Console::WriteLine( "\tSeverity: {0}", args->Severity );
      Console::WriteLine( "\tMessage  : {0}", args->Message );
   }

public:
   static void main()
   {
      XmlTextReader^ tr = gcnew XmlTextReader( "booksSchema.xml" );
      XmlValidatingReader^ vr = gcnew XmlValidatingReader( tr );
      vr->Schemas->Add( nullptr, "books.xsd" );
      vr->ValidationType = ValidationType::Schema;
      vr->ValidationEventHandler += gcnew ValidationEventHandler( Sample::ValidationCallBack );
      while ( vr->Read() )
      {
         if ( vr->NodeType == XmlNodeType::Element )
         {
            if ( dynamic_cast<XmlSchemaComplexType^>(vr->SchemaType) != nullptr )
            {
               XmlSchemaComplexType^ sct = dynamic_cast<XmlSchemaComplexType^>(vr->SchemaType);
               Console::WriteLine( " {0}( {1})", vr->Name, sct->Name );
            }
            else
            {
               Object^ value = vr->ReadTypedValue();
               Console::WriteLine( " {0}( {1}): {2}", vr->Name, value->GetType()->Name, value );
            }
         }
      }
   }
};

int main()
{
   Sample::main();
}
import System.*;
import System.IO.*;
import System.Xml.*;
import System.Xml.Schema.*;

public class Sample
{
    public static void main(String[] args)
    {
        XmlTextReader tr = new XmlTextReader("booksSchema.xml");
        XmlValidatingReader vr = new XmlValidatingReader(tr);

        vr.get_Schemas().Add(null, "books.xsd");
        vr.set_ValidationType(ValidationType.Schema);
        vr.add_ValidationEventHandler(new ValidationEventHandler(
            ValidationCallBack));

        while (vr.Read()) {
            if (vr.get_NodeType().Equals(XmlNodeType.Element)) {
                if (vr.get_SchemaType() instanceof XmlSchemaComplexType) {
                    XmlSchemaComplexType sct = (XmlSchemaComplexType)(
                        vr.get_SchemaType());
                    Console.WriteLine("{0}({1})", vr.get_Name(), sct.get_Name());
                }
                else {
                    Object value = vr.ReadTypedValue();
                    Console.WriteLine("{0}({1}):{2}", vr.get_Name(), 
                        value.GetType().get_Name(), value);
                }
            }
        }
    } //main

    private static void ValidationCallBack(Object sender,
        ValidationEventArgs args)
    {
        Console.WriteLine("***Validation error");
        Console.WriteLine("\tSeverity:{0}", args.get_Severity());
        Console.WriteLine("\tMessage  :{0}", args.get_Message());
    } //ValidationCallBack
} //Sample

Im Beispiel werden die folgenden Eingabedateien verwendet:

booksSchema.xml

<?xml version='1.0'?>
<bookstore xmlns="urn:bookstore-schema">
  <book genre="autobiography">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </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>

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

XmlValidatingReader-Klasse
XmlValidatingReader-Member
System.Xml-Namespace

Weitere Ressourcen

Lesen von XML mit dem "XmlReader"