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

속성 값

String

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

예외

지정한 XML 스키마 데이터 형식을 .NET 데이터 형식에 매핑할 수 없는 경우

지정한 XML 스키마 데이터 형식은 속성에 맞지 않으므로 멤버 형식으로 변환할 수 없는 경우

예제

#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::Xml::Serialization;
using namespace System::IO;

public ref class Group1
{
public:

   // The XmlTextAttribute with type set to string informs the 
   // XmlSerializer that strings should be serialized as XML text.

   [XmlText(String::typeid)]
   [XmlElement(Int32::typeid)]
   [XmlElement(Double::typeid)]
   array<Object^>^All;
   Group1()
   {
      array<Object^>^temp = {321,"One",2,3.0,"Two"};
      All = temp;
   }
};

public enum class GroupType
{
   Small, Medium, Large
};

public ref class Group2
{
public:

   [XmlText(Type=GroupType::typeid)]
   GroupType Type;
};

public ref class Group3
{
public:

   [XmlText(Type=DateTime::typeid)]
   DateTime CreationTime;
   Group3()
   {
      CreationTime = DateTime::Now;
   }
};

public ref class Test
{
public:
   static void main()
   {
      Test^ t = gcnew Test;
      t->SerializeArray( "XmlText1.xml" );
      t->SerializeEnum( "XmlText2.xml" );
      t->SerializeDateTime( "XmlText3.xml" );
   }

private:
   void SerializeArray( String^ filename )
   {
      XmlSerializer^ ser = gcnew XmlSerializer( Group1::typeid );
      Group1^ myGroup1 = gcnew Group1;
      TextWriter^ writer = gcnew StreamWriter( filename );
      ser->Serialize( writer, myGroup1 );
      writer->Close();
   }

   void SerializeEnum( String^ filename )
   {
      XmlSerializer^ ser = gcnew XmlSerializer( Group2::typeid );
      Group2^ myGroup = gcnew Group2;
      myGroup->Type = GroupType::Medium;
      TextWriter^ writer = gcnew StreamWriter( filename );
      ser->Serialize( writer, myGroup );
      writer->Close();
   }

   void SerializeDateTime( String^ filename )
   {
      XmlSerializer^ ser = gcnew XmlSerializer( Group3::typeid );
      Group3^ myGroup = gcnew Group3;
      TextWriter^ writer = gcnew StreamWriter( filename );
      ser->Serialize( writer, myGroup );
      writer->Close();
   }
};

int main()
{
   Test::main();
}
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 을 사용하고 집합을 DataType "base64Binary" 또는 "hexBinary"에 적절하게 적용 XmlTextAttribute 합니다. XML 스키마 timedate 데이터 형식의 경우 형식을 DateTime 사용하고 집합을 XmlTextAttribute DataType "date" 또는 "time"에 적용합니다.

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

참고

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

참고

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

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

XSD 데이터 형식 .NET 데이터 형식
anyURI String
base64Binary Byte 개체의 배열
boolean Boolean
byte SByte
날짜 DateTime
dateTime DateTime
decimal Decimal
double Double
엔터티 String
엔터티 String
float Single
gDay String
gMonth String
gMonthDay String
gYear String
gYearMonth String
hexBinary Byte 개체의 배열
ID String
IDREF String
IDREFS String
int Int32
정수 String
language String
long Int64
Name String
NCName String
negativeInteger String
NMTOKEN String
NMTOKENS String
normalizedString String
nonNegativeInteger String
nonPositiveInteger String
NOTATION String
positiveInteger String
QName XmlQualifiedName
duration String
문자열 String
short Int16
time DateTime
token String
unsignedByte Byte
unsignedInt UInt32
unsignedLong UInt64
unsignedShort UInt16

적용 대상