XsdDataContractExporter 클래스

정의

데이터 계약에 사용되는 .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(공용 언어 런타임) 형식으로 표현되는 데이터를 통합하는 웹 서비스를 만든 경우와 다른 웹 서비스에서 사용할 각 형식에 대한 XML 스키마를 내보내야 하는 경우 클래스를 사용합니다. 즉, XsdDataContractExporter CLR 형식 집합을 XML 스키마로 변환합니다. 사용할 수 있는 형식에 대한 자세한 내용은 데이터 계약 직렬 변환기에서 지원하는 형식을 참조하세요. 그런 다음 서비스와 상호 운용해야 하는 다른 사용자가 사용할 수 있도록 WSDL(Web Services Description Language) 문서를 통해 스키마를 노출할 수 있습니다.

반대로 기존 웹 서비스와 상호 운용해야 하는 웹 서비스를 XsdDataContractImporter 만드는 경우 XML 스키마를 변환하고 선택한 프로그래밍 언어로 데이터를 나타내는 CLR 형식을 만듭니다.

XsdDataContractExporter은 스키마의 컬렉션이 포함된 XmlSchemaSet 개체를 생성합니다. 속성을 통해 스키마 집합에 액세스합니다 Schemas() .

Note

다른 웹 서비스에서 사용할 수 있는 XSD(XML 스키마 정의) 파일을 신속하게 생성하려면 다음을 XsdDataContractExporter사용합니다.

XmlSchemaSet으로 스키마 내보내기

XML 스키마 파일이 포함된 클래스의 XmlSchemaSet 인스턴스를 만들려면 다음 사항에 유의해야 합니다.

내보내는 형식 집합은 내부 데이터 계약 집합으로 기록됩니다. 따라서 새 형식만 집합에 CanExport 추가되므로 성능 저하 없이 메서드를 여러 번 호출하여 스키마 집합에 새 형식을 추가할 수 있습니다. 작업 중에 Export 기존 스키마는 추가되는 새 스키마와 비교됩니다. 충돌이 발생하면 예외가 발생합니다. 일반적으로 데이터 계약 이름이 같지만 서로 다른 계약(다른 멤버)을 가진 두 형식이 동일한 XsdDataContractExporter 인스턴스에서 내보내는 경우 충돌이 검색됩니다.

내보내기 도구 사용

이 클래스를 사용하는 권장 방법은 다음과 같습니다.

  1. 오버로드 중 CanExport 하나를 사용하여 지정된 형식 또는 형식 집합을 내보낼 수 있는지 여부를 확인합니다. 요구 사항에 적합한 오버로드 중 하나를 사용합니다.

  2. 해당 메서드를 호출합니다 Export .

  3. 속성에서 스키마를 검색합니다 Schemas .

생성자

Name Description
XsdDataContractExporter()

XsdDataContractExporter 클래스의 새 인스턴스를 초기화합니다.

XsdDataContractExporter(XmlSchemaSet)

지정된 스키마 집합을 XsdDataContractExporter 사용하여 클래스의 새 인스턴스를 초기화합니다.

속성

Name Description
Options

내보내기 ExportOptions 작업에 대해 설정할 수 있는 옵션이 포함된 옵션을 가져오거나 설정합니다.

Schemas

내보낸 XML 스키마의 컬렉션을 가져옵니다.

메서드

Name Description
CanExport(ICollection<Assembly>)

어셈블리 집합에 포함된 .CLR(공용 언어 런타임) 형식 집합을 내보낼 수 있는지 여부를 나타내는 값을 가져옵니다.

CanExport(ICollection<Type>)

에 포함된 ICollection<T> .CLR(공용 언어 런타임) 형식 집합을 내보낼 수 있는지 여부를 나타내는 값을 가져옵니다.

CanExport(Type)

지정된 CLR(공용 언어 런타임) 형식을 내보낼 수 있는지 여부를 나타내는 값을 가져옵니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
Export(ICollection<Assembly>)

지정된 어셈블리 컬렉션에 포함된 형식을 변환합니다.

Export(ICollection<Type>)

이 메서드에 전달된 형식에 ICollection<T> 포함된 형식을 변환합니다.

Export(Type)

지정된 .NET 형식을 XSD(XML 스키마 정의 언어) 스키마로 변환합니다.

GetHashCode()

기본 해시 함수로 사용됩니다.

(다음에서 상속됨 Object)
GetRootElementName(Type)

에 대한 최상위 이름 및 네임스페이스를 반환합니다 Type.

GetSchemaType(Type)

지정된 형식에 대한 XML 스키마 형식을 반환합니다.

GetSchemaTypeName(Type)

에 대한 계약 이름 및 계약 네임스페이스를 Type반환합니다.

GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상

추가 정보