SoapAttributes.SoapElement プロパティ
オーバーライドする SoapElementAttribute を取得または設定します。
Public Property SoapElement As SoapElementAttribute
[C#]
public SoapElementAttribute SoapElement {get; set;}
[C++]
public: __property SoapElementAttribute* get_SoapElement();public: __property void set_SoapElement(SoapElementAttribute*);
[JScript]
public function get SoapElement() : SoapElementAttribute;public function set SoapElement(SoapElementAttribute);
プロパティ値
オーバーライドする SoapElementAttribute 。
解説
SoapElementAttribute は、クラス メンバを XML 要素としてシリアル化する方法を制御するために使用されます。クラス メンバを XML 要素としてシリアル化する方法をオーバーライドするには、この SoapElement プロパティに新しい SoapElementAttribute を設定します。そのためには、新しい SoapElementAttribute を作成し、それをこのプロパティに割り当てます。次に、 SoapAttributes を SoapAttributeOverrides に追加します。この SoapAttributeOverrides を使用して XmlTypeMapping を作成してから、その XmlTypeMapping を使用して XmlSerializer を構築します。
詳細については、 SoapAttributeOverrides クラスの概要を参照してください。
使用例
[Visual Basic, C#, C++] Transportation
という名前のクラスをシリアル化する例を次に示します。 Vehicle
フィールドのシリアス化がオーバーライドされます。 CreateOverrideSerializer
メソッド内では、 SoapAttributeOverrides が作成され、オーバーライド対象のメンバまたは列挙体ごとに、適切なプロパティが設定された SoapAttributes が作成され、それぞれが SoapAttributeOverrides に追加されています。 XmlTypeMapping が SoapAttributeOverrides を使用して作成され、その XmlTypeMapping を使用して、既定のシリアル化をオーバーライドする XmlSerializer が作成されます。
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
[C#]
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();
}
}
[C++]
#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.");
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
SoapAttributes クラス | SoapAttributes メンバ | System.Xml.Serialization 名前空間 | XmlAttributes | エンコード済み SOAP シリアル化を制御する属性 | XML シリアル化を使用した SOAP メッセージの生成