Export (0) Print
Expand All

SoapElementAttribute Class

Specifies that the public member value be serialized by the XmlSerializer as an encoded SOAP XML element.

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

[AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Parameter|AttributeTargets.ReturnValue)]
public class SoapElementAttribute : Attribute

The SoapElementAttribute 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 [<topic://cpconAttributesThatControlSOAPEncodedSerialization>].

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 SoapElementAttribute to a public field to direct the XmlSerializer to serialize the field as an encoded SOAP XML element.

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

The following example serializes an instance of a class named Transportation that contains a field named Vehicle. A SoapElementAttribute is applied to the field. When the field is serialized, the XML element name is "Wheels" instead of "Vehicle". The SerializeOverride method creates a SoapElementAttribute and sets the SoapElement property of a SoapAttributes to the SoapElementAttribute. The SoapAttributes is added to a SoapAttributeOverrides that is used to create an XmlTypeMapping. An XmlSerializer is constructed with the XmlTypeMapping, and an instance of the Transportation class is again serialized. Because the SoapElementAttribute is used to override the serialization, the generated XML element name is now "Truck" instead of "Wheels".

using System;
using System.IO;
using System.Xml.Serialization;
using System.Collections;
using System.Xml;
using System.Text;
public class Transportation
{
   // The SoapElementAttribute specifies that the 
   // generated XML element name will be "Wheels" 
   // instead of "Vehicle".
   [SoapElement("Wheels")]
   public string Vehicle;
   [SoapElement(DataType = "dateTime")]
   public DateTime CreationDate;
   [SoapElement(IsNullable = true)]
   public Thing thing;

}

public class Thing{ 
   [SoapElement(IsNullable=true)] public string ThingName;
}

public class Test
{
   public static void Main()
   {
      Test t = new Test();
      t.SerializeObject("SoapElementOriginal.xml");
      t.SerializeOverride("SoapElementOverride.xml");
      Console.WriteLine("Finished writing two XML files.");
   }

   // Return an XmlSerializer used for overriding. 
   public XmlSerializer CreateSoapOverrider()
   {
      // Create the SoapAttributes and SoapAttributeOverrides objects.
      SoapAttributes soapAttrs = new SoapAttributes();

      SoapAttributeOverrides soapOverrides = 
      new SoapAttributeOverrides();

      /* Create an SoapElementAttribute to override 
      the Vehicles property. */
      SoapElementAttribute soapElement1 = 
      new SoapElementAttribute("Truck");
      // Set the SoapElement to the object.
      soapAttrs.SoapElement= soapElement1;

      /* Add the SoapAttributes to the SoapAttributeOverrides,
      specifying the member to override. */
      soapOverrides.Add(typeof(Transportation), "Vehicle", soapAttrs);

      // Create the XmlSerializer, and return it.
      XmlTypeMapping myTypeMapping = (new SoapReflectionImporter
      (soapOverrides)).ImportTypeMapping(typeof(Transportation));
      return new XmlSerializer(myTypeMapping);
   }

   public void SerializeOverride(string filename)
   {
      // Create an XmlSerializer instance.
      XmlSerializer ser = CreateSoapOverrider();

      // Create the object and serialize it.
      Transportation myTransportation = 
      new Transportation();

      myTransportation.Vehicle = "MyCar";
      myTransportation.CreationDate=DateTime.Now;
      myTransportation.thing = new Thing();

      XmlTextWriter writer = 
      new XmlTextWriter(filename, Encoding.UTF8);
      writer.Formatting = Formatting.Indented;
      writer.WriteStartElement("wrapper");
      ser.Serialize(writer, myTransportation);
      writer.WriteEndElement();
      writer.Close();
   }
   public void SerializeObject(string filename){
      // Create an XmlSerializer instance.
      XmlSerializer ser = new XmlSerializer(typeof(Transportation));
      Transportation myTransportation = 
      new Transportation();
      myTransportation.Vehicle = "MyCar";
      myTransportation.CreationDate = DateTime.Now;
      myTransportation.thing = new Thing();
      XmlTextWriter writer = 
      new XmlTextWriter(filename, Encoding.UTF8);
      writer.Formatting = Formatting.Indented;
      writer.WriteStartElement("wrapper");
      ser.Serialize(writer, myTransportation);
      writer.WriteEndElement();
      writer.Close();
   }
}
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;
using namespace System::Collections;
using namespace System::Xml;
using namespace System::Text;

__gc public class Thing
{
public:
   [SoapElement(IsNullable=true)] 
   String* ThingName;
};

__gc public class Transportation
{
   // The SoapElementAttribute specifies that the
   // generated XML element name will be S"Wheels"
   // instead of S"Vehicle".
public:
   [SoapElement(S"Wheels")]
   String* Vehicle;

   [SoapElement(DataType = S"dateTime")]
   DateTime CreationDate;

   [SoapElement(IsNullable = true)]
   Thing * thing;
};

__gc public class Test
{
   // Return an XmlSerializer used for overriding.
public:
   XmlSerializer * CreateSoapOverrider() 
   {
      // Create the SoapAttributes and SoapAttributeOverrides objects.
      SoapAttributes* soapAttrs = new SoapAttributes();

      SoapAttributeOverrides* soapOverrides = new SoapAttributeOverrides();

      // Create an SoapElementAttribute to the Vehicles property.
      SoapElementAttribute* soapElement1 = new SoapElementAttribute(S"Truck");

      // Set the SoapElement to the Object*.
      soapAttrs -> SoapElement= soapElement1;

      // Add the SoapAttributes to the SoapAttributeOverrides,specifying the member to.
      soapOverrides -> Add(__typeof(Transportation), S"Vehicle", soapAttrs);

      // Create the XmlSerializer, and return it.
      XmlTypeMapping * myTypeMapping = (new SoapReflectionImporter
         (soapOverrides)) -> ImportTypeMapping(__typeof(Transportation));
      return new XmlSerializer(myTypeMapping);
   }

   void SerializeOverride(String* filename) 
   {
      // Create an XmlSerializer instance.
      XmlSerializer * ser = CreateSoapOverrider();

      // Create the Object* and serialize it.
      Transportation* myTransportation = new Transportation();

      myTransportation -> Vehicle = S"MyCar";
      myTransportation -> CreationDate=DateTime::Now;
      myTransportation -> thing = new Thing();

      XmlTextWriter* writer = new XmlTextWriter(filename, Encoding::UTF8);
      writer -> Formatting = Formatting::Indented;
      writer -> WriteStartElement(S"wrapper");
      ser -> Serialize(writer, myTransportation);
      writer -> WriteEndElement();
      writer -> Close();
   }

   void SerializeObject(String* filename) 
   {
      // Create an XmlSerializer instance.
      XmlSerializer* ser = new XmlSerializer(__typeof(Transportation));
      Transportation* myTransportation = new Transportation();
      myTransportation -> Vehicle = S"MyCar";
      myTransportation -> CreationDate = DateTime::Now;
      myTransportation -> thing = new Thing();
      XmlTextWriter* writer = new XmlTextWriter(filename, Encoding::UTF8);
      writer -> Formatting = Formatting::Indented;
      writer -> WriteStartElement(S"wrapper");
      ser -> Serialize(writer, myTransportation);
      writer -> WriteEndElement();
      writer -> Close();
   }
};

int main() 
{
   Test* t = new Test();
   t -> SerializeObject(S"SoapElementOriginal.xml");
   t -> SerializeOverride(S"SoapElementOverride.xml");
   Console::WriteLine(S"Finished writing two XML files.");
}

System.Object
  System.Attribute
    System.Xml.Serialization.SoapElementAttribute

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