XsdDataContractExporter Klasse

Definition

Ermöglicht die Transformation eines Satzes von .NET Typen, die in Datenverträgen in eine XML-Schemadatei (XSD) verwendet werden.

public ref class XsdDataContractExporter
public class XsdDataContractExporter
type XsdDataContractExporter = class
Public Class XsdDataContractExporter
Vererbung
XsdDataContractExporter

Beispiele

Im folgenden Beispiel wird eine Instanz der XsdDataContractExporter Methode erstellt und aufgerufen 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

Hinweise

Verwenden Sie die XsdDataContractExporter Klasse, wenn Sie einen Webdienst erstellt haben, der Daten enthält, die durch Common Language Runtime (CLR)-Typen dargestellt werden, und wenn Sie XML-Schemas für jeden Typ exportieren müssen, der von anderen Webdiensten genutzt werden soll. Das heißt, XsdDataContractExporter wandelt eine Reihe von CLR-Typen in XML-Schemas um. (Weitere Informationen zu den Typen, die verwendet werden können, finden Sie unter Typen, die vom Serialisierer für den Datenvertrag unterstützt werden.) Die Schemas können dann über ein WSDL-Dokument (Web Services Description Language) verfügbar gemacht werden, das von anderen Benutzern verwendet werden kann, die mit Ihrem Dienst zusammenarbeiten müssen.

Wenn Sie hingegen einen Webdienst erstellen, der mit einem vorhandenen Webdienst zusammenarbeiten muss, verwenden Sie XsdDataContractImporter, um XML-Schemas zu transformieren und die CLR-Typen zu erstellen, die die Daten in einer ausgewählten Programmiersprache darstellen.

Das XsdDataContractExporter generiert ein XmlSchemaSet Objekt, das die Auflistung von Schemas enthält. Greifen Sie über die Schemas() Eigenschaft auf den Satz von Schemas zu.

Note

Um schnell XML-Schemadefinitionsdateien (XSD) zu generieren, die andere Webdienste nutzen können, verwenden Sie die XsdDataContractExporter.

Exportieren von Schemas in ein XmlSchemaSet

Um eine Instanz der Klasse XmlSchemaSet zu erstellen, die XML-Schemadateien enthält, sollten Sie folgendes beachten.

Die Gruppe der Typen, die Sie exportieren, werden als interne Datenverträge aufgezeichnet. So können Sie die CanExport Methode mehrmals aufrufen, um dem Schemasatz neue Typen hinzuzufügen, ohne die Leistung zu beeinträchtigen, da nur die neuen Typen dem Satz hinzugefügt werden. Während des Export Vorgangs werden die vorhandenen Schemas mit den neuen Schemas verglichen, die hinzugefügt werden. Wenn Konflikte auftreten, wird eine Ausnahme ausgelöst. Ein Konflikt wird in der Regel erkannt, wenn zwei Typen mit demselben Datenvertragsnamen, aber verschiedene Verträge (unterschiedliche Member) von derselben XsdDataContractExporter Instanz exportiert werden.

Verwenden Sie den Exporteur

Eine empfohlene Methode zur Verwendung dieser Klasse ist wie folgt:

  1. Verwenden Sie eine der CanExport Überladungen, um zu bestimmen, ob der angegebene Typ oder satz von Typen exportiert werden kann. Verwenden Sie eine der Überladungen, die für die Anforderungen geeignet ist.

  2. Rufen Sie die entsprechende Export Methode auf.

  3. Rufen Sie die Schemas aus der Schemas Eigenschaft ab.

Konstruktoren

Name Beschreibung
XsdDataContractExporter()

Initialisiert eine neue Instanz der XsdDataContractExporter-Klasse.

XsdDataContractExporter(XmlSchemaSet)

Initialisiert eine neue Instanz der XsdDataContractExporter Klasse mit dem angegebenen Satz von Schemas.

Eigenschaften

Name Beschreibung
Options

Dient zum Abrufen oder Festlegen eines ExportOptions Werts, der Optionen enthält, die für den Exportvorgang festgelegt werden können.

Schemas

Ruft die Auflistung exportierter XML-Schemas ab.

Methoden

Name Beschreibung
CanExport(ICollection<Assembly>)

Ruft einen Wert ab, der angibt, ob der Satz von CLR-Typen (Common Language Runtime) in einer Gruppe von Assemblys exportiert werden kann.

CanExport(ICollection<Type>)

Ruft einen Wert ab, der angibt, ob der Satz von CLR-Typen (Common Language Runtime), die in einer ICollection<T> Datei enthalten sind, exportiert werden kann.

CanExport(Type)

Ruft einen Wert ab, der angibt, ob der angegebene ClR-Typ (Common Language Runtime) exportiert werden kann.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
Export(ICollection<Assembly>)

Transformiert die Typen, die in der angegebenen Auflistung von Assemblys enthalten sind.

Export(ICollection<Type>)

Transformiert die Typen, die in der ICollection<T> an diese Methode übergeben werden.

Export(Type)

Wandelt den angegebenen .NET-Typ in ein XSD-Schema (XML-Schemadefinitionssprache) um.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetRootElementName(Type)

Gibt den Namen der obersten Ebene und den Namespace für die Type.

GetSchemaType(Type)

Gibt den XML-Schematyp für den angegebenen Typ zurück.

GetSchemaTypeName(Type)

Gibt den Vertragsnamen und den Vertragsnamespace für den Type.

GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für:

Weitere Informationen