XsdDataContractExporter 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
允许将数据协定中使用的一组.NET类型转换为 XML 架构文件(.xsd)。
public ref class XsdDataContractExporter
public class XsdDataContractExporter
type XsdDataContractExporter = class
Public Class XsdDataContractExporter
- 继承
-
XsdDataContractExporter
示例
以下示例创建并调用XsdDataContractExporter该方法的Export(Type)实例。
using System;
using System.Xml;
using System.Runtime.Serialization;
using System.Xml.Schema;
public class Program
{
public static void Main()
{
try
{
ExportXSD();
}
catch (Exception exc)
{
Console.WriteLine("Message: {0} StackTrace:{1}", exc.Message, exc.StackTrace);
}
finally
{
Console.ReadLine();
}
}
static void ExportXSD()
{
XsdDataContractExporter exporter = new XsdDataContractExporter();
if (exporter.CanExport(typeof(Employee)))
{
exporter.Export(typeof(Employee));
Console.WriteLine("number of schemas: {0}", exporter.Schemas.Count);
Console.WriteLine();
XmlSchemaSet mySchemas = exporter.Schemas;
XmlQualifiedName XmlNameValue = exporter.GetRootElementName(typeof(Employee));
string EmployeeNameSpace = XmlNameValue.Namespace;
foreach (XmlSchema schema in mySchemas.Schemas(EmployeeNameSpace))
{
schema.Write(Console.Out);
}
}
}
static void GetXmlElementName()
{
XsdDataContractExporter myExporter = new XsdDataContractExporter();
XmlQualifiedName xmlElementName =myExporter.GetRootElementName(typeof(Employee));
Console.WriteLine("Namespace: {0}", xmlElementName.Namespace);
Console.WriteLine("Name: {0}", xmlElementName.Name);
Console.WriteLine("IsEmpty: {0}", xmlElementName.IsEmpty);
}
[DataContract(Namespace = "www.Contoso.com/Examples/")]
public class Employee
{
[DataMember]
public string EmployeeName;
[DataMember]
private string ID;
}
}
Imports System.Collections
Imports System.Xml
Imports System.Runtime.Serialization
Imports System.Xml.Schema
Public Class Program
Public Shared Sub Main()
Try
ExportXSD()
Catch exc As Exception
Console.WriteLine("Message: {0} StackTrace:{1}", exc.Message, exc.StackTrace)
Finally
Console.ReadLine()
End Try
End Sub
Shared Sub ExportXSD()
Dim exporter As New XsdDataContractExporter()
' Use the ExportOptions to add the Possessions type to the
' collection of KnownTypes.
Dim eOptions As New ExportOptions()
eOptions.KnownTypes.Add(GetType(Possessions))
exporter.Options = eOptions
If exporter.CanExport(GetType(Employee)) Then
exporter.Export(GetType(Employee))
Console.WriteLine("number of schemas: {0}", exporter.Schemas.Count)
Console.WriteLine()
Dim mySchemas As XmlSchemaSet = exporter.Schemas
Dim XmlNameValue As XmlQualifiedName = _
exporter.GetRootElementName(GetType(Employee))
Dim EmployeeNameSpace As String = XmlNameValue.Namespace
Dim schema As XmlSchema
For Each schema In mySchemas.Schemas(EmployeeNameSpace)
schema.Write(Console.Out)
Next schema
End If
End Sub
Shared Sub GetXmlElementName()
Dim myExporter As New XsdDataContractExporter()
Dim xmlElementName As XmlQualifiedName = myExporter. _
GetRootElementName(GetType(Employee))
Console.WriteLine("Namespace: {0}", xmlElementName.Namespace)
Console.WriteLine("Name: {0}", xmlElementName.Name)
Console.WriteLine("IsEmpty: {0}", xmlElementName.IsEmpty)
End Sub
<DataContract([Namespace] := "www.Contoso.com/Examples/")> _
Public Class Employee
<DataMember()> _
Public EmployeeName As String
<DataMember()> _
Private ID As String
' This member may return a Possessions type.
<DataMember> _
public Miscellaneous As Hashtable
End Class
<DataContract> _
Public Class Possessions
<DataMember> _
Public ItemName As String
End Class
End Class
注解
XsdDataContractExporter创建包含公共语言运行时 (CLR) 类型表示的数据的 Web 服务时,以及需要导出其他 Web 服务要使用的每种类型的 XML 架构时,请使用该类。 也就是说, XsdDataContractExporter 将一组 CLR 类型转换为 XML 架构。 (有关可以使用的类型的详细信息,请参阅 数据协定序列化程序支持的类型。然后,可以通过 Web 服务描述语言(WSDL)文档公开架构,供需要与服务互作的其他人使用。
相反,如果要创建必须与现有 Web 服务互作的 Web 服务,请使用 XsdDataContractImporter 转换 XML 架构并创建表示所选编程语言中的数据的 CLR 类型。
XsdDataContractExporter 生成一个包含架构集合的 XmlSchemaSet 对象。 通过 Schemas() 属性访问架构集。
注释
若要快速生成其他 Web 服务可以使用的 XML 架构定义(XSD)文件,请使用 .XsdDataContractExporter
将架构导出到 XmlSchemaSet
若要创建包含 XML 架构文件的类的 XmlSchemaSet 实例,应注意以下事项。
要导出的类型集记录为内部数据协定集。 因此,可以多次调用 CanExport 该方法以将新类型添加到架构集,而不会降低性能,因为只会将新类型添加到集。 在 Export 操作期间,现有架构会被与要添加的新架构进行比较。 如果有冲突,则会引发异常。 如果具有相同数据协定名称但不同的协定(不同成员)的两种类型由同 XsdDataContractExporter 一实例导出,则通常会检测到冲突。
使用导出程序
建议按以下方法使用此类:
构造函数
| 名称 | 说明 |
|---|---|
| XsdDataContractExporter() |
初始化 XsdDataContractExporter 类的新实例。 |
| XsdDataContractExporter(XmlSchemaSet) |
使用指定的架构集初始化类的新实例 XsdDataContractExporter 。 |
属性
| 名称 | 说明 |
|---|---|
| Options |
获取或设置一个 ExportOptions 包含可为导出操作设置的选项。 |
| Schemas |
获取导出的 XML 架构的集合。 |
方法
| 名称 | 说明 |
|---|---|
| CanExport(ICollection<Assembly>) |
获取一个值,该值指示是否可以导出一组程序集中包含的 .common language runtime (CLR) 类型集。 |
| CanExport(ICollection<Type>) |
获取一个值,该值指示是否可以导出包含在其中的 ICollection<T> .common language runtime (CLR) 类型的集。 |
| CanExport(Type) |
获取一个值,该值指示是否可以导出指定的公共语言运行时 (CLR) 类型。 |
| Equals(Object) |
确定指定的对象是否等于当前对象。 (继承自 Object) |
| Export(ICollection<Assembly>) |
转换指定程序集集合中包含的类型。 |
| Export(ICollection<Type>) |
转换传递给此方法时 ICollection<T> 所包含的类型。 |
| Export(Type) |
将指定的 .NET 类型转换为 XML 架构定义语言 (XSD) 架构。 |
| GetHashCode() |
用作默认哈希函数。 (继承自 Object) |
| GetRootElementName(Type) |
返回 的 Type顶级名称和命名空间。 |
| GetSchemaType(Type) |
返回指定类型的 XML 架构类型。 |
| GetSchemaTypeName(Type) |
返回 .. 的协定名称和协定命名空间 Type。 |
| GetType() |
获取当前实例的 Type。 (继承自 Object) |
| MemberwiseClone() |
创建当前 Object的浅表副本。 (继承自 Object) |
| ToString() |
返回一个表示当前对象的字符串。 (继承自 Object) |