SoapAttributeAttribute.DataType プロパティ
XmlSerializer によって生成された SOAP 属性の XML スキーマ定義言語 (XSD) データ型を取得または設定します。
Public Property DataType As String
[C#]
public string DataType {get; set;}
[C++]
public: __property String* get_DataType();public: __property void set_DataType(String*);
[JScript]
public function get DataType() : String;public function set DataType(String);
プロパティ値
W3C (World Wide Web Consortium) (www.w3.org) のドキュメント『XML Schema Part 2: Datatypes』で定義されている XML スキーマ データ型。
例外
例外の種類 | 条件 |
---|---|
Exception | 指定した XML スキーマ データ型を .NET データ型に割り当てることができません。 |
解説
XML スキーマの単純データ型と、それに相当する .NET データ型の表を次に示します。
XML スキーマの base64Binary データ型と hexBinary データ型については、 Byte 構造体の配列を使用し、 DataType をそれぞれ "base64Binary" または "hexBinary" に設定した SoapAttributeAttribute を適用します。XML スキーマの time データ型と date データ型については、 DateTime 型を使用して、 DataType を "date" または "time" に設定した SoapAttributeAttribute を適用します。
文字列に割り当てられるすべての XML スキーマ データ型については、 DataType プロパティをその XML スキーマ データ型に設定した SoapAttributeAttribute を適用します。これにより、メンバのスキーマだけが変更され、シリアル化形式は変更されなくなります。
メモ このプロパティでは大文字と小文字が区別されるため、XML スキーマ データ型を正しく設定する必要があります。
メモ バイナリ データは、XML 属性として渡すよりも XML 要素として渡す方が効率的です。
XML スキーマ データ型の詳細については、W3C (World Wide Web Consortium) (www.w3.org) のドキュメント『XML Schema Part 2: Datatypes』を参照してください。
XSD データ型 | .NET データ型 |
---|---|
anyURI | String |
base64Binary | Byte オブジェクトの配列 |
boolean | Boolean |
byte | SByte |
date | DateTime |
dateTime | DateTime |
decimal | Decimal |
double | Double |
ENTITY | String |
ENTITIES | String |
float | Single |
gDay | String |
gMonth | String |
gMonthDay | String |
gYear | String |
gYearMonth | String |
hexBinary | Byte オブジェクトの配列 |
ID | String |
IDREF | String |
IDREFS | String |
int | Int32 |
integer | 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 | String |
short | Int16 |
time | DateTime |
token | String |
unsignedByte | Byte |
unsignedInt | UInt32 |
unsignedLong | UInt64 |
unsignedShort | UInt16 |
使用例
[Visual Basic, C#, C++] SoapAttributeAttribute の適用対象となる複数のフィールドが含まれているクラスをシリアル化する例を次に示します。 GroupNumber
フィールドと Today
フィールドに対して DataType プロパティが設定されています。
Imports System
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Serialization
Imports System.Xml.Schema
<SoapInclude(GetType(Vehicle))> _
Public Class Group
<SoapAttribute (Namespace:= "http:'www.cpandl.com")> _
Public GroupName As String
<SoapAttribute(DataType:= "base64Binary")> _
Public GroupNumber() As Byte
<SoapAttribute(DataType:= "date", AttributeName:= "CreationDate")> _
Public Today As DateTime
<SoapElement(DataType:= "nonNegativeInteger", _
ElementName:= "PosInt")> _
Public PostitiveInt As String
Public GroupVehicle As Vehicle
End Class
Public Class Vehicle
Public licenseNumber As String
End Class
Public Class Run
Shared Sub Main()
Dim test As Run = New Run()
test.SerializeObject("SoapAtts.xml")
test.DeserializeObject("SoapAtts.xml")
End Sub
Public Sub SerializeObject(filename As String)
' Create an instance of the XmlSerializer Class that
' can generate encoded SOAP messages.
Dim mySerializer As XmlSerializer = ReturnSOAPSerializer()
Dim myGroup As Group = MakeGroup()
' Writing the file requires a TextWriter.
Dim writer As XmlTextWriter = _
New XmlTextWriter(filename, Encoding.UTF8)
writer.Formatting = Formatting.Indented
writer.WriteStartElement("wrapper")
' Serialize the Class, and close the TextWriter.
mySerializer.Serialize(writer, myGroup)
writer.WriteEndElement()
writer.Close()
End Sub
Private Function MakeGroup() As Group
' Create an instance of the Class that will be serialized.
Dim myGroup As Group = New Group()
' Set the object properties.
myGroup.GroupName = ".NET"
Dim hexByte() As Byte= New Byte(1){Convert.ToByte(100), _
Convert.ToByte(50)}
myGroup.GroupNumber = hexByte
Dim myDate As DateTime = New DateTime(2002,5,2)
myGroup.Today = myDate
myGroup.PostitiveInt= "10000"
myGroup.GroupVehicle = New Vehicle()
myGroup.GroupVehicle.licenseNumber="1234"
return myGroup
End Function
Public Sub DeserializeObject(filename As String)
' Create an instance of the XmlSerializer Class that
' can generate encoded SOAP messages.
Dim mySerializer As XmlSerializer = ReturnSOAPSerializer()
' Reading the file requires an XmlTextReader.
Dim reader As XmlTextReader = _
New XmlTextReader(filename)
reader.ReadStartElement("wrapper")
' Deserialize and cast the object.
Dim myGroup As Group
myGroup = _
CType(mySerializer.Deserialize(reader), Group)
reader.ReadEndElement()
reader.Close()
End Sub
private Function ReturnSOAPSerializer() As XmlSerializer
' Create an instance of the XmlSerializer Class.
Dim myMapping As XmlTypeMapping = _
(New SoapReflectionImporter().ImportTypeMapping _
(GetType(Group)))
return New XmlSerializer(myMapping)
End Function
End Class
[C#]
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.Xml.Schema;
[SoapInclude(typeof(Vehicle))]
public class Group
{
[SoapAttribute (Namespace = "http://www.cpandl.com")]
public string GroupName;
[SoapAttribute(DataType = "base64Binary")]
public Byte [] GroupNumber;
[SoapAttribute(DataType = "date", AttributeName = "CreationDate")]
public DateTime Today;
[SoapElement(DataType = "nonNegativeInteger", ElementName = "PosInt")]
public string PostitiveInt;
public Vehicle GroupVehicle;
}
public class Vehicle
{
public string licenseNumber;
}
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeObject("SoapAtts.xml");
test.DeserializeObject("SoapAtts.xml");
}
public void SerializeObject(string filename)
{
// Create an instance of the XmlSerializer class that
// can generate encoded SOAP messages.
XmlSerializer mySerializer = ReturnSOAPSerializer();
Group myGroup=MakeGroup();
// Writing the file requires a TextWriter.
XmlTextWriter writer =
new XmlTextWriter(filename, Encoding.UTF8);
writer.Formatting = Formatting.Indented;
writer.WriteStartElement("wrapper");
// Serialize the class, and close the TextWriter.
mySerializer.Serialize(writer, myGroup);
writer.WriteEndElement();
writer.Close();
}
private Group MakeGroup(){
// Create an instance of the class that will be serialized.
Group myGroup = new Group();
// Set the object properties.
myGroup.GroupName = ".NET";
Byte [] hexByte = new Byte[2]{Convert.ToByte(100),
Convert.ToByte(50)};
myGroup.GroupNumber = hexByte;
DateTime myDate = new DateTime(2002,5,2);
myGroup.Today = myDate;
myGroup.PostitiveInt= "10000";
myGroup.GroupVehicle = new Vehicle();
myGroup.GroupVehicle.licenseNumber="1234";
return myGroup;
}
public void DeserializeObject(string filename)
{
// Create an instance of the XmlSerializer class that
// can generate encoded SOAP messages.
XmlSerializer mySerializer = ReturnSOAPSerializer();
// Reading the file requires an XmlTextReader.
XmlTextReader reader=
new XmlTextReader(filename);
reader.ReadStartElement("wrapper");
// Deserialize and cast the object.
Group myGroup;
myGroup = (Group) mySerializer.Deserialize(reader);
reader.ReadEndElement();
reader.Close();
}
private XmlSerializer ReturnSOAPSerializer(){
// Create an instance of the XmlSerializer class.
XmlTypeMapping myMapping =
(new SoapReflectionImporter().ImportTypeMapping
(typeof(Group)));
return new XmlSerializer(myMapping);
}
}
[C++]
#using <mscorlib.dll>
#using <System.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Xml;
using namespace System::Xml::Serialization;
using namespace System::Xml::Schema;
//using namespace System::Runtime::Remoting::Metadata;
public __gc class Vehicle {
public:
String* licenseNumber;
};
[SoapInclude(__typeof(Vehicle))]
public __gc class Group {
public:
[SoapAttributeAttribute (Namespace = S"http://www.cpandl.com")]
String* GroupName;
[SoapAttributeAttribute(DataType = S"base64Binary")]
Byte GroupNumber[];
[SoapAttributeAttribute(DataType = S"date", AttributeName = S"CreationDate")]
DateTime Today;
[SoapElement(DataType = S"nonNegativeInteger", ElementName = S"PosInt")]
String* PostitiveInt;
Vehicle* GroupVehicle;
};
public __gc class Run {
public:
void SerializeObject(String* filename) {
// Create an instance of the XmlSerializer class that
// can generate encoded SOAP messages.
XmlSerializer* mySerializer = ReturnSOAPSerializer();
Group* myGroup=MakeGroup();
// Writing the file requires a TextWriter.
XmlTextWriter* writer = new XmlTextWriter(filename, Encoding::UTF8);
writer->Formatting = Formatting::Indented;
writer->WriteStartElement(S"wrapper");
// Serialize the class, and close the TextWriter.
mySerializer->Serialize(writer, myGroup);
writer->WriteEndElement();
writer->Close();
}
private:
Group* MakeGroup() {
// Create an instance of the class that will be serialized.
Group* myGroup = new Group();
// Set the Object* properties.
myGroup->GroupName = S".NET";
Byte hexByte[] = {Convert::ToByte(100),
Convert::ToByte(50)};
myGroup->GroupNumber = hexByte;
DateTime myDate = DateTime(2002, 5, 2);
myGroup->Today = myDate;
myGroup->PostitiveInt= S"10000";
myGroup->GroupVehicle = new Vehicle();
myGroup->GroupVehicle->licenseNumber=S"1234";
return myGroup;
}
public:
void DeserializeObject(String* filename) {
// Create an instance of the XmlSerializer class that
// can generate encoded SOAP messages.
XmlSerializer* mySerializer = ReturnSOAPSerializer();
// Reading the file requires an XmlTextReader.
XmlTextReader* reader = new XmlTextReader(filename);
reader->ReadStartElement(S"wrapper");
// Deserialize and cast the Object*.
Group* myGroup;
myGroup = __try_cast<Group*>( mySerializer->Deserialize(reader) );
reader->ReadEndElement();
reader->Close();
}
private:
XmlSerializer* ReturnSOAPSerializer() {
// Create an instance of the XmlSerializer class.
XmlTypeMapping* myMapping =
(new SoapReflectionImporter())->ImportTypeMapping(__typeof(Group));
return new XmlSerializer(myMapping);
}
};
int main() {
Run* test = new Run();
test->SerializeObject(S"SoapAtts.xml");
test->DeserializeObject(S"SoapAtts.xml");
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
参照
SoapAttributeAttribute クラス | SoapAttributeAttribute メンバ | System.Xml.Serialization 名前空間