.NET Framework Class Library
XmlSchemaObject Class
Represents the root class for the Xml schema object model hierarchy and serves as a base class for classes such as the XmlSchema class.
Inheritance Hierarchy
System.Object
System.Xml.Schema.XmlSchemaObject
System.Xml.Schema.XmlSchema
System.Xml.Schema.XmlSchemaAnnotated
System.Xml.Schema.XmlSchemaAnnotation
System.Xml.Schema.XmlSchemaAppInfo
System.Xml.Schema.XmlSchemaDocumentation
System.Xml.Schema.XmlSchemaExternal
Namespace: System.Xml.Schema
Assembly: System.Xml (in System.Xml.dll)
Syntax
Visual Basic
<PermissionSetAttribute(SecurityAction.InheritanceDemand, Name := "FullTrust")> _ Public MustInherit Class XmlSchemaObject
C#
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")] public abstract class XmlSchemaObject
Visual C++
[PermissionSetAttribute(SecurityAction::InheritanceDemand, Name = L"FullTrust")] public ref class XmlSchemaObject abstract
F#
[<AbstractClass>] [<PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")>] type XmlSchemaObject = class end
The XmlSchemaObject type exposes the following members.
Constructors
| Name | Description | |
|---|---|---|
|
XmlSchemaObject | Initializes a new instance of the XmlSchemaObject class. |
Properties
| Name | Description | |
|---|---|---|
|
LineNumber | Gets or sets the line number in the file to which the schema element refers. |
|
LinePosition | Gets or sets the line position in the file to which the schema element refers. |
|
Namespaces | Gets or sets the XmlSerializerNamespaces to use with this schema object. |
|
Parent | Gets or sets the parent of this XmlSchemaObject. |
|
SourceUri | Gets or sets the source location for the file that loaded the schema. |
Methods
| Name | Description | |
|---|---|---|
|
Equals(Object) | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) |
|
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) |
|
GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
|
GetType | Gets the Type of the current instance. (Inherited from Object.) |
|
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
|
ToString | Returns a string that represents the current object. (Inherited from Object.) |
Examples
The following example displays each schema object.
Visual Basic
Option Strict On Option Explicit On Imports System Imports System.Xml Imports System.Xml.Schema Imports System.IO Imports System.Reflection Imports Microsoft.VisualBasic Public Class ValidXSD Public Shared Sub Main() Dim xsd As String = "example.xsd" Dim fs As FileStream Dim schema As XmlSchema Try fs = New FileStream(xsd, FileMode.Open) schema = XmlSchema.Read(fs, New ValidationEventHandler(AddressOf ShowCompileError)) Dim schemaSet As New XmlSchemaSet() AddHandler schemaSet.ValidationEventHandler, AddressOf ShowCompileError schemaSet.Add(schema) schemaSet.Compile() Dim compiledSchema As XmlSchema = Nothing For Each schema1 As XmlSchema In schemaSet.Schemas() compiledSchema = schema1 Next schema = compiledSchema If schema.IsCompiled Then DisplayObjects(schema) End If Catch e As XmlSchemaException Console.WriteLine("LineNumber = {0}", e.LineNumber) Console.WriteLine("LinePosition = {0}", e.LinePosition) Console.WriteLine("Message = {0}", e.Message) Console.WriteLine("Source = {0}", e.Source) End Try End Sub 'Main Private Overloads Shared Sub DisplayObjects(ByVal o As Object) DisplayObjects(o, "") End Sub 'DisplayObjects Private Overloads Shared Sub DisplayObjects(ByVal o As Object, ByVal indent As String) Console.WriteLine("{0}{1}", indent, o) Dim property1 As PropertyInfo For Each property1 In o.GetType().GetProperties() If property1.PropertyType.FullName = "System.Xml.Schema.XmlSchemaObjectCollection" Then Dim childObjectCollection As XmlSchemaObjectCollection = CType(property1.GetValue(o, Nothing), XmlSchemaObjectCollection) Dim schemaObject As XmlSchemaObject For Each schemaObject In childObjectCollection DisplayObjects(schemaObject, indent + ControlChars.Tab) Next schemaObject End If Next property1 End Sub 'DisplayObjects Private Shared Sub ShowCompileError(ByVal sender As Object, ByVal e As ValidationEventArgs) Console.WriteLine("Validation Error: {0}", e.Message) End Sub 'ShowCompileError End Class 'ValidXSD
C#
using System; using System.Xml; using System.Xml.Schema; using System.IO; using System.Reflection; public class ValidXSD { public static int Main() { string xsd = "example.xsd"; FileStream fs; XmlSchema schema; try { fs = new FileStream(xsd, FileMode.Open); schema = XmlSchema.Read(fs, new ValidationEventHandler(ShowCompileError)); XmlSchemaSet schemaSet = new XmlSchemaSet(); schemaSet.ValidationEventHandler += new ValidationEventHandler(ShowCompileError); schemaSet.Add(schema); schemaSet.Compile(); XmlSchema compiledSchema = null; foreach (XmlSchema schema1 in schemaSet.Schemas()) { compiledSchema = schema1; } schema = compiledSchema; if (schema.IsCompiled) { DisplayObjects(schema); } return 0; } catch (XmlSchemaException e) { Console.WriteLine("LineNumber = {0}", e.LineNumber); Console.WriteLine("LinePosition = {0}", e.LinePosition); Console.WriteLine("Message = {0}", e.Message); Console.WriteLine("Source = {0}", e.Source); return -1; } } private static void DisplayObjects(object o) { DisplayObjects(o, ""); } private static void DisplayObjects(object o, string indent) { Console.WriteLine("{0}{1}", indent, o); foreach (PropertyInfo property in o.GetType().GetProperties()) { if (property.PropertyType.FullName == "System.Xml.Schema.XmlSchemaObjectCollection") { XmlSchemaObjectCollection childObjectCollection = (XmlSchemaObjectCollection)property.GetValue(o, null); foreach (XmlSchemaObject schemaObject in childObjectCollection) { DisplayObjects(schemaObject, indent + "\t"); } } } } private static void ShowCompileError(object sender, ValidationEventArgs e) { Console.WriteLine("Validation Error: {0}", e.Message); } }
Visual C++
#using <System.Xml.dll> using namespace System; using namespace System::IO; using namespace System::Reflection; using namespace System::Xml; using namespace System::Xml::Schema; ref class ValidXSD { private: static void DisplayObjects(Object^ o) { DisplayObjects(o, ""); } static void DisplayObjects(Object^ o, String^ indent) { Console::WriteLine("{0}{1}", indent, o); for each (PropertyInfo^ property1 in o->GetType()->GetProperties()) { if (property1->PropertyType->FullName == "System.Xml.Schema.XmlSchemaObjectCollection") { XmlSchemaObjectCollection^ childObjectCollection = dynamic_cast<XmlSchemaObjectCollection^>(property1->GetValue(o, nullptr)); for each (XmlSchemaObject^ schemaObject in childObjectCollection) { DisplayObjects(schemaObject, indent + "\t"); } } } } static void ShowCompileError(Object^ sender, ValidationEventArgs^ e) { Console::WriteLine("Validation Error: {0}", e->Message); } public: static int Main() { String^ xsd = "example.xsd"; FileStream^ fs; XmlSchema^ schema; try { fs = gcnew FileStream(xsd, FileMode::Open); schema = XmlSchema::Read(fs, gcnew ValidationEventHandler(ShowCompileError)); XmlSchemaSet^ schemaSet = gcnew XmlSchemaSet(); schemaSet->ValidationEventHandler += gcnew ValidationEventHandler(ShowCompileError); schemaSet->Add(schema); schemaSet->Compile(); XmlSchema^ compiledSchema = nullptr; for each (XmlSchema^ schema1 in schemaSet->Schemas()) { compiledSchema = schema1; } schema = compiledSchema; if (schema->IsCompiled) { DisplayObjects(schema); } return 0; } catch (XmlSchemaException^ e) { Console::WriteLine("LineNumber = {0}", e->LineNumber); Console::WriteLine("LinePosition = {0}", e->LinePosition); Console::WriteLine("Message = {0}", e->Message); Console::WriteLine("Source = {0}", e->Source); return -1; } } }; int main() { ValidXSD::Main(); return 0; }
The example uses the example.xsd file as input.
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:group name="testGroup">
<xs:choice>
<xs:any namespace="##any"/>
</xs:choice>
</xs:group>
<xs:element name="myElement" >
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:group ref="testGroup" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Version Information
.NET Framework
Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Supported in: 4, 3.5 SP1Platforms
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.See Also