다음을 통해 공유


XmlTextAttribute.DataType 속성

정의

에서 생성된 XmlSerializer텍스트의 XSD(XML 스키마 정의 언어) 데이터 형식을 가져오거나 설정합니다.

public:
 property System::String ^ DataType { System::String ^ get(); void set(System::String ^ value); };
public string DataType { get; set; }
member this.DataType : string with get, set
Public Property DataType As String

속성 값

XSD(XML 스키마) 데이터 형식입니다.

예외

지정한 XML 스키마 데이터 형식은 .NET 데이터 형식에 매핑할 수 없습니다.

지정한 XML 스키마 데이터 형식이 속성에 유효하지 않으며 멤버 형식으로 변환할 수 없습니다.

예제

using System;
using System.Xml.Serialization;
using System.IO;

public class Group1{
   // The XmlTextAttribute with type set to string informs the
   // XmlSerializer that strings should be serialized as XML text.
   [XmlText(typeof(string))]
   [XmlElement(typeof(int))]
   [XmlElement(typeof(double))]
   public object [] All= new object []{321, "One", 2, 3.0, "Two" };
}

public class Group2{
   [XmlText(Type = typeof(GroupType))]
   public GroupType Type;
}
public enum GroupType{
   Small,
   Medium,
   Large
}

public class Group3{
   [XmlText(Type=typeof(DateTime))]
   public DateTime CreationTime = DateTime.Now;
}

public class Test{
   static void Main(){
      Test t = new Test();
      t.SerializeArray("XmlText1.xml");
      t.SerializeEnum("XmlText2.xml");
      t.SerializeDateTime("XmlText3.xml");
   }

   private void SerializeArray(string filename){
      XmlSerializer ser = new XmlSerializer(typeof(Group1));
      Group1 myGroup1 = new Group1();

      TextWriter writer = new StreamWriter(filename);

      ser.Serialize(writer, myGroup1);
      writer.Close();
   }

   private void SerializeEnum(string filename){
      XmlSerializer ser = new XmlSerializer(typeof(Group2));
      Group2 myGroup = new Group2();
      myGroup.Type = GroupType.Medium;
      TextWriter writer = new StreamWriter(filename);

      ser.Serialize(writer, myGroup);
      writer.Close();
   }

   private void SerializeDateTime(string filename){
      XmlSerializer ser = new XmlSerializer(typeof(Group3));
      Group3 myGroup = new Group3();
      TextWriter writer = new StreamWriter(filename);

      ser.Serialize(writer, myGroup);
      writer.Close();
   }
}
Imports System.Xml.Serialization
Imports System.IO


Public Class Group1
   ' The XmlTextAttribute with type set to String informs the 
   ' XmlSerializer that strings should be serialized as XML text.
   <XmlText(GetType(String)), _
   XmlElement(GetType(integer)), _  
   XmlElement(GetType(double))> _
   public All () As Object = _
   New Object (){321, "One", 2, 3.0, "Two" }
End Class


Public Class Group2
   <XmlText(GetType(GroupType))> _
   public Type As GroupType 
End Class

Public Enum GroupType
   Small
   Medium
   Large
End Enum

Public Class Group3
   <XmlText(GetType(DateTime))> _
   Public CreationTime As DateTime = DateTime.Now
End Class

Public Class Test
   Shared Sub Main()
      Dim t As Test = New Test()
      t.SerializeArray("XmlText1.xml")
      t.SerializeEnum("XmlText2.xml")
      t.SerializeDateTime("XmlText3.xml")
   End Sub

   Private Sub SerializeArray(filename As String)
      Dim ser As XmlSerializer = New XmlSerializer(GetType(Group1))
      Dim myGroup1 As Group1 = New Group1()

      Dim writer As TextWriter = New StreamWriter(filename)

      ser.Serialize(writer, myGroup1)
      writer.Close()
   End Sub

   Private Sub SerializeEnum(filename As String)
      Dim ser As XmlSerializer = New XmlSerializer(GetType(Group2))
      Dim myGroup As Group2 = New Group2()
      myGroup.Type = GroupType.Medium
      Dim writer As TextWriter = New StreamWriter(filename)

      ser.Serialize(writer, myGroup)
      writer.Close()
   End Sub

   Private Sub SerializeDateTime(filename As String)
      Dim ser As XmlSerializer = new XmlSerializer(GetType(Group3))
      Dim myGroup As Group3 = new Group3()
      Dim writer As TextWriter = new StreamWriter(filename)

      ser.Serialize(writer, myGroup)
      writer.Close()
   End Sub
End Class

설명

DataType 속성을 XML 스키마 단순 데이터 형식으로 설정하면 생성된 XML의 형식에 영향을 줍니다. 예를 들어 속성을 "date"로 설정하면 생성된 텍스트의 서식이 일반 날짜 스타일(예: 2001-08-31)으로 지정됩니다. 반면에 속성을 "dateTime"으로 설정하면 국제표준화기구 문서 8601, "날짜 및 시간 표현"(예: 2001-08-15T06:59:11.0508456-07:00)에 정의된 특정 인스턴스가 발생합니다.

xml 스키마 정의 도구(Xsd.exe)를 사용하여 컴파일된 파일에 대한 XML 스키마를 생성할 때도 속성을 설정하는 DataType 효과를 볼 수 있습니다. 도구 사용에 대한 자세한 내용은 XML 스키마 정의 도구 및 XML Serialization을 참조하세요.

다음 표에서는 .NET에 해당하는 XML 스키마 단순 데이터 형식을 나열합니다.

XML 스키마 base64BinaryhexBinary 데이터 형식의 Byte 경우 구조체 배열을 사용하고 집합을 "base64Binary" 또는 "hexBinary"에 적절하게 적용 XmlTextAttributeDataType 합니다. XML 스키마 timedate 데이터 형식의 경우 형식을 DateTime 사용하고 집합을 XmlTextAttributeDataType "date" 또는 "time"에 적용합니다.

문자열에 매핑되는 모든 XML 스키마 데이터 형식에 대해 해당 DataType 속성 집합을 XmlTextAttribute XML 스키마 데이터 형식에 적용합니다. 이렇게 하면 serialization 형식이 변경되지 않고 멤버에 대한 스키마만 변경됩니다.

메모

속성은 대/소문자를 구분하므로 XML 스키마 데이터 형식 중 하나로 정확하게 설정해야 합니다.

메모

이진 데이터를 XML 요소로 전달하는 것이 XML 특성으로 전달하는 것보다 더 효율적입니다.

XML 스키마 데이터 형식에 대한 자세한 내용은 XML 스키마 파트 2: 데이터 형식이라는 World Wide Web 컨소시엄 문서를 참조하세요.

XSD 데이터 형식 .NET 데이터 형식
anyURI String
base64Binary 개체 배열 Byte
부울 Boolean
byte SByte
date DateTime
날짜시간 DateTime
십진수 Decimal
더블 Double
엔터티 String
엔터티 String
떠다니다 Single
gDay String
gMonth String
gMonthDay String
gYear String
연도월 String
hexBinary 개체 배열 Byte
아이디 String
Idref String
Idrefs String
int Int32
정수 (integer) String
언어 String
long Int64
이름 String
Ncname String
negativeInteger String
NMTOKEN String
NMTOKENS String
normalizedString String
nonNegativeInteger String
nonPositiveInteger String
표기법 String
positiveInteger String
QName XmlQualifiedName
duration String
문자열 String
short Int16
시간 DateTime
token String
부호 없는 바이트 Byte
부호 없는 정수 UInt32
unsignedLong UInt64
부호 없는 짧은 정수 UInt16

적용 대상