SoapAttributeAttribute Class
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
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 |
|---|
| 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
Windows 98, Windows 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 .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.
Note