XsdDataContractExporter Klas

Definitie

Hiermee staat u de transformatie van een set .NET typen toe die worden gebruikt in gegevenscontracten in een XML-schemabestand (.xsd).

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

Voorbeelden

In het volgende voorbeeld wordt een exemplaar van de XsdDataContractExporter methode gemaakt en de methode aangeroepen 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

Opmerkingen

Gebruik de XsdDataContractExporter klasse wanneer u een webservice hebt gemaakt die gegevens bevat die worden vertegenwoordigd door CLR-typen (Common Language Runtime) en wanneer u XML-schema's moet exporteren voor elk type dat door andere webservices moet worden gebruikt. Dat wil gezegd, XsdDataContractExporter transformeert een set CLR-typen in XML-schema's. (Zie Typen die worden ondersteund door de Serializer van het gegevenscontract voor meer informatie over de typen die kunnen worden gebruikt.) De schema's kunnen vervolgens worden weergegeven via een WSDL-document (Web Services Description Language) voor gebruik door anderen die met uw service moeten samenwerken.

Als u echter een webservice maakt die moet samenwerken met een bestaande webservice, gebruikt u het XsdDataContractImporter om XML-schema's te transformeren en de CLR-typen te maken die de gegevens in een geselecteerde programmeertaal vertegenwoordigen.

Hiermee XsdDataContractExporter wordt een XmlSchemaSet object gegenereerd dat de verzameling schema's bevat. Toegang krijgen tot de reeks schemas door middel van de Schemas() eigenschap.

Note

Als u snel XSD-bestanden (XML-schemadefinitie) wilt genereren die andere webservices kunnen gebruiken, gebruikt u de XsdDataContractExporter.

Schema's exporteren naar een XmlSchemaSet

Als u een exemplaar wilt maken van de XmlSchemaSet klasse die XML-schemabestanden bevat, moet u rekening houden met het volgende.

De set typen die u exporteert, worden vastgelegd als een interne set gegevenscontracten. U kunt de CanExport methode dus meerdere keren aanroepen om nieuwe typen toe te voegen aan de schemaset zonder de prestaties te verminderen, omdat alleen de nieuwe typen worden toegevoegd aan de set. Tijdens de Export bewerking worden de bestaande schema's vergeleken met de nieuwe schema's die worden toegevoegd. Als er conflicten zijn, wordt er een uitzondering gegenereerd. Er wordt meestal een conflict gedetecteerd als twee typen met dezelfde naam van het gegevenscontract, maar verschillende contracten (verschillende leden) door hetzelfde XsdDataContractExporter exemplaar worden geëxporteerd.

De exporteur gebruiken

Een aanbevolen manier om deze klasse te gebruiken is als volgt:

  1. Gebruik een van de CanExport overbelastingen om te bepalen of het opgegeven type of de typeverzameling geëxporteerd kan worden. Gebruik een van de overbelastingen die geschikt zijn voor uw vereisten.

  2. Roep de bijbehorende Export methode aan.

  3. Haal de schema's op uit de Schemas eigenschap.

Constructors

Name Description
XsdDataContractExporter()

Initialiseert een nieuw exemplaar van de XsdDataContractExporter klasse.

XsdDataContractExporter(XmlSchemaSet)

Initialiseert een nieuw exemplaar van de XsdDataContractExporter klasse met de opgegeven set schema's.

Eigenschappen

Name Description
Options

Hiermee haalt u een op of stelt u een ExportOptions met opties in die kunnen worden ingesteld voor de exportbewerking.

Schemas

Hiermee haalt u de verzameling geëxporteerde XML-schema's op.

Methoden

Name Description
CanExport(ICollection<Assembly>)

Hiermee wordt een waarde opgehaald die aangeeft of de set CLR-typen (Common Language Runtime) in een set assembly's kan worden geëxporteerd.

CanExport(ICollection<Type>)

Hiermee wordt een waarde opgehaald die aangeeft of de set CLR-typen (Common Language Runtime) in een ICollection<T> kan worden geëxporteerd.

CanExport(Type)

Hiermee wordt een waarde opgehaald die aangeeft of het opgegeven CLR-type (Common Language Runtime) kan worden geëxporteerd.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
Export(ICollection<Assembly>)

Transformeert de typen in de opgegeven verzameling assembly's.

Export(ICollection<Type>)

Transformeert de typen die zijn opgenomen in de ICollection<T> doorgegeven aan deze methode.

Export(Type)

Hiermee transformeert u het opgegeven .NET type in een XSD-schema (XML Schema Definition Language).

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetRootElementName(Type)

Retourneert de naam en naamruimte op het hoogste niveau voor de Type.

GetSchemaType(Type)

Retourneert het XML-schematype voor het opgegeven type.

GetSchemaTypeName(Type)

Retourneert de contractnaam en contractnaamruimte voor de Type.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op

Zie ook