This documentation is archived and is not being maintained.

SoapAttributeAttribute Class

Specifies that the XmlSerializer must serialize the class member as an encoded SOAP attribute.

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

'Declaration
<AttributeUsageAttribute(AttributeTargets.Property Or AttributeTargets.Field Or AttributeTargets.Parameter Or AttributeTargets.ReturnValue)> _
Public Class SoapAttributeAttribute _
	Inherits Attribute
'Usage
Dim instance As SoapAttributeAttribute

The SoapAttributeAttribute class belongs to a family of attributes that controls how the XmlSerializer serializes, or deserializes, an object as encoded SOAP XML. The resulting XML conforms to section 5 of the World Wide Web Consortium (www.w3.org) document, "Simple Object Access Protocol (SOAP) 1.1". For a complete list of similar attributes, see Attributes That Control Encoded SOAP Serialization.

To serialize an object as an encoded SOAP message, you must construct the XmlSerializer using an XmlTypeMapping created with the ImportTypeMapping method of the SoapReflectionImporter class.

Apply the SoapAttributeAttribute to a public field to specify that the XmlSerializer serializes the field as an XML attribute. You can specify an alternative name of the attribute by setting the AttributeName property. Set the DataType if the attribute must be given a specific XML Schema definition language (XSD) data type. If the attribute belongs to a specific XML namespace, set the Namespace property.

For more information about using attributes, see Extending Metadata Using Attributes

NoteNote:

You can use the word SoapAttribute in your code instead of the longer SoapAttributeAttribute.

The following example serializes a class that contains several fields to which a SoapAttributeAttribute is applied.

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

System.Object
  System.Attribute
    System.Xml.Serialization.SoapAttributeAttribute

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

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
Show: