Export (0) Print
Expand All

SoapAttributeAttribute.DataType Property

Gets or sets the XML Schema definition language (XSD) data type of the SOAP attribute generated by the XmlSerializer.

Namespace:  System.Xml.Serialization
Assembly:  System.Xml (in System.Xml.dll)

public string DataType { get; set; }

Property Value

Type: System.String
An XML Schema data type, as defined by the World Wide Web Consortium (www.w3.org) document named "XML Schema Part 2: Datatypes".

ExceptionCondition
Exception

The XML Schema data type you have specified cannot be mapped to the .NET data type.

The following table lists the XML Schema simple data types with their.NET equivalents.

For the XML Schema base64Binary and hexBinary data types, use an array of Byte structures, and apply a SoapAttributeAttribute with the DataType set to "base64Binary" or "hexBinary", as appropriate. For the XML Schema time and date data types, use the DateTime type and apply the SoapAttributeAttribute with the DataType set to "date" or "time".

For every XML Schema data type that is mapped to a string, apply the SoapAttributeAttribute with its DataType property set to the XML Schema data type. Note that this does not change the serialization format, only the schema for the member.

NoteNote:

The property is case-sensitive, so you must set it exactly to one of the XML Schema data types.

NoteNote:

Passing binary data as an XML element is more efficient then passing it as an XML attribute.

For more information about XML Schema data types, see the World Wide Consortium (www.w3.org) document named "XML Schema Part 2: Datatypes".

XSD data type

.NET data type

anyURI

String

base64Binary

Array of Byte objects

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

Array of Byte objects

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

The following example serializes a class that contains several fields to which a SoapAttributeAttribute is applied. The DataType property is set for the GroupNumber and the Today fields.

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);
   }
}
#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");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0

XNA Framework

Supported in: 3.0, 2.0, 1.0

Community Additions

ADD
Show:
© 2015 Microsoft