SoapElementAttribute 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定公共成员值由 XmlSerializer 序列化为经过编码的 SOAP XML 元素。
public ref class SoapElementAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue)]
public class SoapElementAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue)>]
type SoapElementAttribute = class
inherit Attribute
Public Class SoapElementAttribute
Inherits Attribute
- 继承
- 属性
示例
The following example serializes an instance of a class named Transportation
that contains a field named Vehicle
. A SoapElementAttribute 应用于字段。 序列化字段时,XML 元素名称为“Wheel”而不是“Vehicle”。 该方法SerializeOverride
创建一个SoapElementAttribute并将 a SoapAttributes 的属性设置为 SoapElement 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. SoapElementAttribute由于用于替代序列化,因此生成的 XML 元素名称现在为“Truck”而不是“Wheel”。
#using <System.Xml.dll>
#using <System.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;
public ref class Thing
{
public:
[SoapElement(IsNullable=true)]
String^ ThingName;
};
public ref class Transportation
{
public:
// The SoapElementAttribute specifies that the
// generated XML element name will be S"Wheels"
// instead of S"Vehicle".
[SoapElement("Wheels")]
String^ Vehicle;
[SoapElement(DataType="dateTime")]
DateTime CreationDate;
[SoapElement(IsNullable=true)]
Thing^ thing;
};
public ref class Test
{
public:
// Return an XmlSerializer used for overriding.
XmlSerializer^ CreateSoapOverrider()
{
// Create the SoapAttributes and SoapAttributeOverrides objects.
SoapAttributes^ soapAttrs = gcnew SoapAttributes;
SoapAttributeOverrides^ soapOverrides = gcnew SoapAttributeOverrides;
// Create an SoapElementAttribute to the Vehicles property.
SoapElementAttribute^ soapElement1 = gcnew SoapElementAttribute( "Truck" );
// Set the SoapElement to the Object*.
soapAttrs->SoapElement = soapElement1;
// Add the SoapAttributes to the SoapAttributeOverrides,specifying the member to.
soapOverrides->Add( Transportation::typeid, "Vehicle", soapAttrs );
// Create the XmlSerializer, and return it.
XmlTypeMapping^ myTypeMapping = (gcnew SoapReflectionImporter( soapOverrides ))->ImportTypeMapping( Transportation::typeid );
return gcnew XmlSerializer( myTypeMapping );
}
void SerializeOverride( String^ filename )
{
// Create an XmlSerializer instance.
XmlSerializer^ ser = CreateSoapOverrider();
// Create the Object* and serialize it.
Transportation^ myTransportation = gcnew Transportation;
myTransportation->Vehicle = "MyCar";
myTransportation->CreationDate = DateTime::Now;
myTransportation->thing = gcnew Thing;
XmlTextWriter^ writer = gcnew XmlTextWriter( filename,Encoding::UTF8 );
writer->Formatting = Formatting::Indented;
writer->WriteStartElement( "wrapper" );
ser->Serialize( writer, myTransportation );
writer->WriteEndElement();
writer->Close();
}
void SerializeObject( String^ filename )
{
// Create an XmlSerializer instance.
XmlSerializer^ ser = gcnew XmlSerializer( Transportation::typeid );
Transportation^ myTransportation = gcnew Transportation;
myTransportation->Vehicle = "MyCar";
myTransportation->CreationDate = DateTime::Now;
myTransportation->thing = gcnew Thing;
XmlTextWriter^ writer = gcnew XmlTextWriter( filename,Encoding::UTF8 );
writer->Formatting = Formatting::Indented;
writer->WriteStartElement( "wrapper" );
ser->Serialize( writer, myTransportation );
writer->WriteEndElement();
writer->Close();
}
};
int main()
{
Test^ t = gcnew Test;
t->SerializeObject( "SoapElementOriginal.xml" );
t->SerializeOverride( "SoapElementOverride.xml" );
Console::WriteLine( "Finished writing two XML files." );
}
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();
}
}
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
注解
该 SoapElementAttribute 类属于一系列属性,用于控制序列化或反序列化对象的编码 SOAP XML 的方式 XmlSerializer 。 生成的 XML 符合万维网联盟文档的第 5 部分: 简单对象访问协议 (SOAP) 1.1。 有关类似属性的完整列表,请参阅 控制编码的 SOAP 序列化的属性。
若要将对象序列化为编码的 SOAP 消息,必须使用通过XmlTypeMappingImportTypeMapping类的方法SoapReflectionImporter创建的对象来构造XmlSerializer该消息。
将 SoapElementAttribute 字段应用于公共字段,以将 XmlSerializer 字段序列化为编码的 SOAP XML 元素。
有关使用属性的详细信息,请参阅 “属性”。
构造函数
SoapElementAttribute() |
初始化 SoapElementAttribute 类的新实例。 |
SoapElementAttribute(String) |
初始化 SoapElementAttribute 类的新实例,并指定 XML 元素的名称。 |
属性
DataType |
获取或设置生成的 XML 元素的“XML 架构”定义语言 (XSD) 数据类型。 |
ElementName |
获取或设置生成的 XML 元素的名称。 |
IsNullable |
获取或者设置一个值,该值指示 XmlSerializer 是否必须序列化一个 |
TypeId |
在派生类中实现时,获取此 Attribute 的唯一标识符。 (继承自 Attribute) |
方法
Equals(Object) |
返回一个值,该值指示此实例是否与指定的对象相等。 (继承自 Attribute) |
GetHashCode() |
返回此实例的哈希代码。 (继承自 Attribute) |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
IsDefaultAttribute() |
在派生类中重写时,指示此实例的值是否是派生类的默认值。 (继承自 Attribute) |
Match(Object) |
当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。 (继承自 Attribute) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |
显式接口实现
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
将一组名称映射为对应的一组调度标识符。 (继承自 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
检索对象的类型信息,然后可以使用该信息获取接口的类型信息。 (继承自 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
检索对象提供的类型信息接口的数量(0 或 1)。 (继承自 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
提供对某一对象公开的属性和方法的访问。 (继承自 Attribute) |