SoapAttributeAttribute.DataType 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置由 XmlSerializer 生成的 SOAP 特性的“XML 架构”定义语言 (XSD) 数据类型。
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
属性值
XML 架构数据类型。
例外
已指定的 XML 架构数据类型无法映射到 .NET 数据类型。
示例
以下示例序列化一个类,该类包含应用了 SoapAttributeAttribute 多个字段。 为DataType字段Today
和字段设置GroupNumber
属性。
#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 ref class Vehicle
{
public:
String^ licenseNumber;
};
[SoapInclude(Vehicle::typeid)]
public ref class Group
{
public:
[SoapAttributeAttribute(Namespace="http://www.cpandl.com")]
String^ GroupName;
[SoapAttributeAttribute(DataType="base64Binary")]
array<Byte>^GroupNumber;
[SoapAttributeAttribute(DataType="date",AttributeName="CreationDate")]
DateTime Today;
[SoapElement(DataType="nonNegativeInteger",ElementName="PosInt")]
String^ PostitiveInt;
Vehicle^ GroupVehicle;
};
public ref 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 = gcnew 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 = gcnew Group;
// Set the Object* properties.
myGroup->GroupName = ".NET";
array<Byte>^hexByte = {Convert::ToByte( 100 ),Convert::ToByte( 50 )};
myGroup->GroupNumber = hexByte;
DateTime myDate = DateTime(2002,5,2);
myGroup->Today = myDate;
myGroup->PostitiveInt = "10000";
myGroup->GroupVehicle = gcnew 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 = gcnew XmlTextReader( filename );
reader->ReadStartElement( "wrapper" );
// Deserialize and cast the Object*.
Group^ myGroup;
myGroup = safe_cast<Group^>(mySerializer->Deserialize( reader ));
reader->ReadEndElement();
reader->Close();
}
private:
XmlSerializer^ ReturnSOAPSerializer()
{
// Create an instance of the XmlSerializer class.
XmlTypeMapping^ myMapping = (gcnew SoapReflectionImporter)->ImportTypeMapping( Group::typeid );
return gcnew XmlSerializer( myMapping );
}
};
int main()
{
Run^ test = gcnew Run;
test->SerializeObject( "SoapAtts.xml" );
test->DeserializeObject( "SoapAtts.xml" );
}
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);
}
}
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
注解
下表列出了具有 their.NET 等效项的 XML 架构简单数据类型。
对于 XML 架构base64Binary
和hexBinary
数据类型,请使用结构数组Byte,并根据需要将SoapAttributeAttributeDataType集应用于“base64Binary”或“hexBinary”。 对于 XML 架构time
和date
数据类型,请使用该DateTime类型,并将集DataType应用于SoapAttributeAttribute“date”或“time”。
对于映射到字符串的每个 XML 架构数据类型,请 SoapAttributeAttribute 将其 DataType 属性设置为 XML 架构数据类型。 请注意,这不会更改序列化格式,仅更改成员的架构。
备注
该属性区分大小写,因此必须将其完全设置为 XML 架构数据类型之一。
备注
将二进制数据作为 XML 元素传递效率更高,然后将其作为 XML 属性传递。
有关 XML 架构数据类型的详细信息,请参阅名为 XML 架构第 2 部分的万维联盟文档:数据类型] (https://www.w3.org/TR/xmlschema-2/)。
XSD 数据类型 | .NET 数据类型 |
---|---|
anyURI | String |
base64Binary | Byte 对象的数组 |
boolean | Boolean |
字节 | SByte |
日期 | DateTime |
dateTime | DateTime |
Decimal | Decimal |
Double | Double |
ENTITY | 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 |
语言 | String |
long | Int64 |
“属性” | 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 |
令牌 | String |
unsignedByte | Byte |
unsignedInt | UInt32 |
unsignedLong | UInt64 |
unsignedShort | UInt16 |