XmlTextAttribute.DataType 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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.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 스키마 base64Binary
및 hexBinary
데이터 형식의 경우 구조 배열 Byte 을 사용하고 집합을 DataType "base64Binary" 또는 "hexBinary"에 적절하게 적용 XmlTextAttribute 합니다. XML 스키마 time
및 date
데이터 형식의 경우 형식을 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 |