Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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