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

/** @attribute AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Parameter|AttributeTargets.ReturnValue) */ 
public class SoapAttributeAttribute extends Attribute
AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Parameter|AttributeTargets.ReturnValue) 
public class SoapAttributeAttribute extends Attribute
Not applicable.

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

import System.*;
import System.IO.*;
import System.Text.*;
import System.Xml.*;
import System.Xml.Serialization.*;
import System.Xml.Schema.*;

/** @attribute SoapInclude(Vehicle.class)
 */
public class Group
{
    /** @attribute SoapAttribute(Namespace = "http://www.cpandl.com")
     */
    public String groupName;

    /** @attribute SoapAttribute(DataType = "base64Binary")
     */
    public System.Byte groupNumber[];

    /** @attribute SoapAttribute(DataType = "date", 
        AttributeName = "CreationDate")
     */
    public DateTime today;

    /** @attribute SoapElement(DataType = "nonNegativeInteger", 
        ElementName = "PosInt")
     */
    public String postitiveInt;

    public Vehicle groupVehicle;
} //Group

public class Vehicle
{
    public String licenseNumber;
} //Vehicle

public class Run
{
    public static void main(String[] args)
    {
        Run test = new Run();
        test.SerializeObject("SoapAtts.xml");
        test.DeserializeObject("SoapAtts.xml");
    } //main

    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.get_UTF8());
        writer.set_Formatting(Formatting.Indented);
        writer.WriteStartElement("wrapper");
        // Serialize the class, and close the TextWriter.
        mySerializer.Serialize(writer, myGroup);
        writer.WriteEndElement();
        writer.Close();
    } //SerializeObject

    private Group MakeGroup()
    {
        // Create an instance of the class that will be serialized.
        Group myGroup = new Group();
        // Set the object properties.
        myGroup.groupName = ".NET";
        ubyte u1 = 100, u2 = 50;
        System.Byte b1 = (System.Byte)u1;
        System.Byte b2 = (System.Byte)u2;
        System.Byte hexByte[] = new System.Byte[] { b1, b2 };
        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;
    } //MakeGroup

    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();
    } //DeserializeObject

    private XmlSerializer ReturnSOAPSerializer()
    {
        // Create an instance of the XmlSerializer class.
        XmlTypeMapping myMapping = (new SoapReflectionImporter()).
            ImportTypeMapping(Group.class.ToType());
        return new XmlSerializer(myMapping);
    } //ReturnSOAPSerializer
} //Run

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 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0, 1.0

XNA Framework

Supported in: 1.0

Community Additions

ADD
Show: