XsdDataContractExporter Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Permite la transformación de un conjunto de .NET tipos que se usan en contratos de datos en un archivo de esquema XML (.xsd).
public ref class XsdDataContractExporter
public class XsdDataContractExporter
type XsdDataContractExporter = class
Public Class XsdDataContractExporter
- Herencia
-
XsdDataContractExporter
Ejemplos
En el ejemplo siguiente se crea una instancia de XsdDataContractExporter y se llama al Export(Type) método .
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
Comentarios
Use la XsdDataContractExporter clase cuando haya creado un servicio web que incorpore datos representados por tipos de Common Language Runtime (CLR) y cuando necesite exportar esquemas XML para cada tipo que otros servicios web consuman. Es decir, XsdDataContractExporter transforma un conjunto de tipos CLR en esquemas XML. (Para obtener más información sobre los tipos que se pueden usar, vea Tipos admitidos por el serializador de contrato de datos). A continuación, los esquemas se pueden exponer a través de un documento de lenguaje de descripción de servicios web (WSDL) para su uso por parte de otros usuarios que necesitan interoperar con el servicio.
Por el contrario, si va a crear un servicio web que debe interoperar con un servicio web existente, use el XsdDataContractImporter para transformar los esquemas XML y crear los tipos CLR que representan los datos en el lenguaje de programación seleccionado.
XsdDataContractExporter genera un XmlSchemaSet objeto que contiene la colección de esquemas. Acceda al conjunto de esquemas a través de la Schemas() propiedad .
Note
Para generar rápidamente archivos de definición de esquema XML (XSD) que otros servicios web pueden consumir, use el XsdDataContractExporter.
Exportación de esquemas a xmlSchemaSet
Para crear una instancia de la XmlSchemaSet clase que contiene archivos de esquema XML, debe tener en cuenta lo siguiente.
El conjunto de tipos que está exportando se registra como un conjunto interno de contratos de datos. Por lo tanto, puede llamar al CanExport método varias veces para agregar nuevos tipos al conjunto de esquemas sin degradar el rendimiento porque solo se agregarán los nuevos tipos al conjunto. Durante la Export operación, los esquemas existentes se comparan con los nuevos esquemas que se agregan. Si hay conflictos, se producirá una excepción. Normalmente se detecta un conflicto si una misma instancia XsdDataContractExporter exporta dos tipos con el mismo nombre de contrato de datos pero con contratos diferentes (miembros diferentes).
Utiliza el exportador
Una manera recomendada de usar esta clase es la siguiente:
Utilice una de las CanExport sobrecargas para determinar si el tipo o el grupo de tipos especificados se pueden exportar. Use una de las sobrecargas adecuadas para sus requisitos.
Llame al método Export correspondiente.
Recupere los esquemas de la propiedad Schemas.
Constructores
| Nombre | Description |
|---|---|
| XsdDataContractExporter() |
Inicializa una nueva instancia de la clase XsdDataContractExporter. |
| XsdDataContractExporter(XmlSchemaSet) |
Inicializa una nueva instancia de la XsdDataContractExporter clase con el conjunto de esquemas especificado. |
Propiedades
| Nombre | Description |
|---|---|
| Options |
Obtiene o establece un ExportOptions objeto que contiene opciones que se pueden establecer para la operación de exportación. |
| Schemas |
Obtiene la colección de esquemas XML exportados. |
Métodos
| Nombre | Description |
|---|---|
| CanExport(ICollection<Assembly>) |
Obtiene un valor que indica si se puede exportar el conjunto de tipos de .Common Language Runtime (CLR) contenidos en un conjunto de ensamblados. |
| CanExport(ICollection<Type>) |
Obtiene un valor que indica si se puede exportar el conjunto de tipos de .Common Language Runtime (CLR) contenidos en .ICollection<T> |
| CanExport(Type) |
Obtiene un valor que indica si se puede exportar el tipo de Common Language Runtime (CLR) especificado. |
| Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
| Export(ICollection<Assembly>) |
Transforma los tipos contenidos en la colección especificada de ensamblados. |
| Export(ICollection<Type>) |
Transforma los tipos contenidos en el ICollection<T> objeto pasado a este método. |
| Export(Type) |
Transforma el tipo de .NET especificado en un esquema de lenguaje de definición de esquemas XML (XSD). |
| GetHashCode() |
Actúa como función hash predeterminada. (Heredado de Object) |
| GetRootElementName(Type) |
Devuelve el nombre de nivel superior y el espacio de nombres de .Type |
| GetSchemaType(Type) |
Devuelve el tipo de esquema XML para el tipo especificado. |
| GetSchemaTypeName(Type) |
Devuelve el nombre del contrato y el espacio de nombres del contrato para .Type |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |