XsdDataContractExporter 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
데이터 계약에 사용되는 .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 인스턴스에서 내보내는 경우 충돌이 검색됩니다.
내보내기 도구 사용
이 클래스를 사용하는 권장 방법은 다음과 같습니다.
오버로드 중 CanExport 하나를 사용하여 지정된 형식 또는 형식 집합을 내보낼 수 있는지 여부를 확인합니다. 요구 사항에 적합한 오버로드 중 하나를 사용합니다.
해당 메서드를 호출합니다 Export .
속성에서 스키마를 검색합니다 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) |