XmlSchemaObject 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示 Xml 結構描述物件模型階層架構的根類別,並且做為 XmlSchema 等類別的基底類別。
public ref class XmlSchemaObject abstract
public abstract class XmlSchemaObject
type XmlSchemaObject = class
Public MustInherit Class XmlSchemaObject
- 繼承
-
XmlSchemaObject
- 衍生
範例
下列範例會顯示每個架構物件。
#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;
}
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);
}
}
Option Strict On
Option Explicit On
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO
Imports System.Reflection
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
Private Overloads Shared Sub DisplayObjects(ByVal o As Object)
DisplayObjects(o, "")
End Sub
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
Private Shared Sub ShowCompileError(ByVal sender As Object, ByVal e As ValidationEventArgs)
Console.WriteLine("Validation Error: {0}", e.Message)
End Sub
End Class
該範例使用 example.xsd
檔案做為輸入。
<?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>
建構函式
XmlSchemaObject() |
初始化 XmlSchemaObject 類別的新執行個體。 |
屬性
LineNumber |
取得或設定 |
LinePosition |
取得或設定 |
Namespaces |
取得或設定 XmlSerializerNamespaces,以便與這個結構描述物件一起使用。 |
Parent |
取得或設定這個 XmlSchemaObject 的父項。 |
SourceUri |
取得或設定載入結構描述之檔案的來源位置。 |
方法
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
GetHashCode() |
做為預設雜湊函式。 (繼承來源 Object) |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ToString() |
傳回代表目前物件的字串。 (繼承來源 Object) |