Export (0) Print
Expand All

SoapAttributeAttribute Class

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

For a list of all members of this type, see SoapAttributeAttribute Members.

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

[Visual Basic]
<AttributeUsage(AttributeTargets.Property Or AttributeTargets.Field _
   Or AttributeTargets.Parameter Or AttributeTargets.ReturnValue)>
Public Class SoapAttributeAttribute
   Inherits Attribute
[C#]
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field
   | AttributeTargets.Parameter | AttributeTargets.ReturnValue)]
public class SoapAttributeAttribute : Attribute
[C++]
[AttributeUsage(AttributeTargets::Property |
   AttributeTargets::Field | AttributeTargets::Parameter |
   AttributeTargets::ReturnValue)]
public __gc class SoapAttributeAttribute : public Attribute
[JScript]
public
   AttributeUsage(AttributeTargets.Property | AttributeTargets.Field |
   AttributeTargets.Parameter | AttributeTargets.ReturnValue)
class SoapAttributeAttribute extends Attribute

Thread Safety

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

Remarks

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.

Note   In your code, you can use the word SoapAttribute instead of the longer SoapAttributeAttribute.

Example

[Visual Basic, C#, C++] The following example serializes a class that contains several fields to which a SoapAttributeAttribute is applied.

[Visual Basic] 
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] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Namespace: System.Xml.Serialization

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework

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

See Also

SoapAttributeAttribute Members | System.Xml.Serialization Namespace | XmlSerializer | SoapAttributeOverrides | SoapAttribute

Show:
© 2015 Microsoft