SoapElementAttribute Class
Specifies that the public member value be serialized by the XmlSerializer as an encoded SOAP XML element.
Assembly: System.Xml (in System.Xml.dll)
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".
Imports System Imports System.IO Imports System.Xml.Serialization Imports System.Collections Imports System.Xml Imports System.Text Public Class Transportation ' The SoapElementAttribute specifies that the ' generated XML element name will be "Wheels" ' instead of "Vehicle". <SoapElement("Wheels")> Public Vehicle As String <SoapElement(DataType:= "dateTime")> _ public CreationDate As DateTime <SoapElement(IsNullable:= true)> _ public thing As Thing End Class Public Class Thing <SoapElement(IsNullable:=true)> public ThingName As string End Class Public Class Test Shared Sub Main() Dim t As Test = New Test() t.SerializeObject("SoapElementOriginalVb.xml") t.SerializeOverride("SoapElementOverrideVb.xml") Console.WriteLine("Finished writing two XML files.") End Sub ' Return an XmlSerializer used for overriding. Public Function CreateSoapOverrider() As XmlSerializer ' Create the SoapAttributes and SoapAttributeOverrides objects. Dim soapAttrs As SoapAttributes = New SoapAttributes() Dim soapOverrides As SoapAttributeOverrides = _ New SoapAttributeOverrides() ' Create a SoapElementAttribute to override ' the Vehicles property. Dim soapElement1 As SoapElementAttribute = _ 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(GetType(Transportation), "Vehicle", soapAttrs) ' Create the XmlSerializer, and return it. Dim myTypeMapping As XmlTypeMapping = (New _ SoapReflectionImporter (soapOverrides)).ImportTypeMapping _ (GetType(Transportation)) return New XmlSerializer(myTypeMapping) End Function Public Sub SerializeOverride(filename As String) ' Create an XmlSerializer instance. Dim ser As XmlSerializer = CreateSoapOverrider() ' Create the object and serialize it. Dim myTransportation As Transportation = _ New Transportation() myTransportation.Vehicle = "MyCar" myTransportation.CreationDate = DateTime.Now myTransportation.thing= new Thing() Dim writer As XmlTextWriter = _ New XmlTextWriter(filename, Encoding.UTF8) writer.Formatting = Formatting.Indented writer.WriteStartElement("wrapper") ser.Serialize(writer, myTransportation) writer.WriteEndElement() writer.Close() End Sub Public Sub SerializeObject(filename As String) ' Create an XmlSerializer instance. Dim ser As XmlSerializer = _ New XmlSerializer(GetType(Transportation)) Dim myTransportation As Transportation = _ New Transportation() myTransportation.Vehicle = "MyCar" myTransportation.CreationDate=DateTime.Now myTransportation.thing= new Thing() Dim writer As XmlTextWriter = _ new XmlTextWriter(filename, Encoding.UTF8) writer.Formatting = Formatting.Indented writer.WriteStartElement("wrapper") ser.Serialize(writer, myTransportation) writer.WriteEndElement() writer.Close() End Sub End Class
#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.");
}
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.