Export (0) Print
Expand All

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)

[AttributeUsageAttribute(AttributeTargets::Property|AttributeTargets::Field|AttributeTargets::Parameter|AttributeTargets::ReturnValue)]
public ref class SoapAttributeAttribute : public Attribute

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.

#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 <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

Community Additions

ADD
Show:
© 2014 Microsoft