XsdDataContractExporter Classe

Définition

Permet la transformation d’un ensemble de types .NET utilisés dans les contrats de données dans un fichier de schéma XML (.xsd).

public ref class XsdDataContractExporter
public class XsdDataContractExporter
type XsdDataContractExporter = class
Public Class XsdDataContractExporter
Héritage
XsdDataContractExporter

Exemples

L’exemple suivant crée une instance de la XsdDataContractExporter méthode et appelle la Export(Type) méthode.

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

Remarques

Utilisez la XsdDataContractExporter classe lorsque vous avez créé un service Web qui incorpore des données représentées par des types CLR (Common Language Runtime) et quand vous devez exporter des schémas XML pour chaque type à consommer par d’autres services Web. Autrement dit, XsdDataContractExporter transforme un ensemble de types CLR en schémas XML. (Pour plus d’informations sur les types qui peuvent être utilisés, consultez Types pris en charge par le sérialiseur de contrat de données.) Les schémas peuvent ensuite être exposés via un document WSDL (Web Services Description Language) à utiliser par d’autres personnes qui doivent interagir avec votre service.

À l’inverse, si vous créez un service Web qui doit interagir avec un service Web existant, utilisez la méthode XsdDataContractImporter pour transformer des schémas XML et créer les types CLR qui représentent les données dans un langage de programmation sélectionné.

XsdDataContractExporter génère un objet XmlSchemaSet qui contient la collection de schémas. Accédez à l’ensemble de schémas via la Schemas() propriété.

Note

Pour générer rapidement des fichiers XSD (XML Schema Definition) que d’autres services Web peuvent consommer, utilisez le XsdDataContractExporter.

Exporter des schémas dans un XmlSchemaSet

Pour créer une instance de la XmlSchemaSet classe qui contient des fichiers de schéma XML, vous devez connaître les éléments suivants.

L’ensemble de types que vous exportez est enregistré en tant qu’ensemble interne de contrats de données. Par conséquent, vous pouvez appeler la CanExport méthode plusieurs fois pour ajouter de nouveaux types au jeu de schémas sans dégrader les performances, car seuls les nouveaux types seront ajoutés au jeu. Pendant l’opération Export , les schémas existants sont comparés aux nouveaux schémas ajoutés. Si des conflits existent, une exception sera levée. Un conflit est généralement détecté si deux types portant le même nom de contrat de données, mais différents contrats (membres différents) sont exportés par la même XsdDataContractExporter instance.

Utiliser l’exportateur

Une méthode recommandée d’utilisation de cette classe est la suivante :

  1. Utilisez l’une des CanExport surcharges pour déterminer si le type spécifié ou l'ensemble de types spécifié peut être exporté. Utilisez l’une des surcharges qui est appropriée pour vos exigences.

  2. Appelez la méthode correspondante Export .

  3. Récupérez les schémas de la Schemas propriété.

Constructeurs

Nom Description
XsdDataContractExporter()

Initialise une nouvelle instance de la classe XsdDataContractExporter.

XsdDataContractExporter(XmlSchemaSet)

Initialise une nouvelle instance de la XsdDataContractExporter classe avec le jeu de schémas spécifié.

Propriétés

Nom Description
Options

Obtient ou définit une ExportOptions option qui contient des options qui peuvent être définies pour l’opération d’exportation.

Schemas

Obtient la collection de schémas XML exportés.

Méthodes

Nom Description
CanExport(ICollection<Assembly>)

Obtient une valeur qui indique si l’ensemble de types .Common Language Runtime (CLR) contenus dans un ensemble d’assemblys peut être exporté.

CanExport(ICollection<Type>)

Obtient une valeur qui indique si l’ensemble de types .common language runtime (CLR) contenus dans un ICollection<T> peut être exporté.

CanExport(Type)

Obtient une valeur qui indique si le type CLR (Common Language Runtime) spécifié peut être exporté.

Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
Export(ICollection<Assembly>)

Transforme les types contenus dans la collection d’assemblys spécifiée.

Export(ICollection<Type>)

Transforme les types contenus dans la ICollection<T> méthode passée.

Export(Type)

Transforme le type .NET spécifié en schéma XSD (XML Schema Definition Language).

GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetRootElementName(Type)

Retourne le nom de niveau supérieur et l’espace de noms pour le Type.

GetSchemaType(Type)

Retourne le type de schéma XML pour le type spécifié.

GetSchemaTypeName(Type)

Retourne le nom du contrat et l’espace de noms de contrat pour le Type.

GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

S’applique à

Voir aussi