XmlSerializer.Serialize メソッド (Stream, Object, XmlSerializerNamespaces)
指定した Object をシリアル化し、指定した Stream を使用して、指定した名前空間を参照し、生成された XML ドキュメントをファイルに書き込みます。
Overloads Public Sub Serialize( _
ByVal stream As Stream, _ ByVal o As Object, _ ByVal namespaces As XmlSerializerNamespaces _)
[C#]
public void Serialize(Streamstream,objecto,XmlSerializerNamespacesnamespaces);
[C++]
public: void Serialize(Stream* stream,Object* o,XmlSerializerNamespaces* namespaces);
[JScript]
public function Serialize(
stream : Stream,o : Object,namespaces : XmlSerializerNamespaces);
パラメータ
- stream
XML ドキュメントを書き込むために使用する Stream 。 - o
シリアル化する Object 。 - namespaces
オブジェクトが参照する XmlSerializerNamespaces 。
解説
Serialize メソッドを呼び出すと、オブジェクトのパブリック フィールドとパブリックな読み書き可能プロパティが XML に変換されます。メソッド、インデクサ、プライベート フィールド、および読み取り専用プロパティはシリアル化されません。パブリックとプライベート両方のフィールドとプロパティをすべてシリアル化するには、 BinaryFormatter を使用します。
stream パラメータを使用して、ストリームに書き込むようにデザインされている、抽象 Stream クラスから派生したオブジェクトを指定します。 Stream の派生クラスには、次のクラスが含まれます。
使用例
[Visual Basic, C#, C++] Stream オブジェクトを使用して、オブジェクトをシリアル化する例を次に示します。この例では、 XmlSerializerNamespaces も作成し、そのオブジェクトに 2 つの名前空間を追加します。シリアル化されたオブジェクトを定義するクラスには、各要素の名前空間を指定する XmlElementAttribute 属性も設定されます。
Imports System
Imports System.IO
Imports System.Xml.Serialization
Imports Microsoft.VisualBasic
' This is the class that will be serialized.
Public Class OrderedItem
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public ItemName As String
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public Description As String
<XmlElement(Namespace := "http://www.cohowinery.com")> _
Public UnitPrice As Decimal
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public Quantity As Integer
<XmlElement(Namespace := "http://www.cohowinery.com")> _
Public LineTotal As Decimal
' A custom method used to calculate price per item.
Public Sub Calculate()
LineTotal = UnitPrice * Quantity
End Sub
End Class
Public Class Test
Public Shared Sub Main()
Dim t As New Test()
' Write a purchase order.
t.SerializeObject("simple.xml")
t.DeserializeObject("simple.xml")
End Sub
Private Sub SerializeObject(ByVal filename As String)
Console.WriteLine("Writing With Stream")
Dim serializer As New XmlSerializer(GetType(OrderedItem))
Dim i As New OrderedItem()
With i
.ItemName = "Widget"
.Description = "Regular Widget"
.Quantity = 10
.UnitPrice = CDec(2.3)
.Calculate()
End With
' Create an XmlSerializerNamespaces object.
Dim ns As New XmlSerializerNamespaces()
' Add two prefix-namespace pairs.
ns.Add("inventory", "http://www.cpandl.com")
ns.Add("money", "http://www.cohowinery.com")
' Create a FileStream to write with.
Dim writer As New FileStream(filename, FileMode.Create)
' Serialize the object, and close the TextWriter
serializer.Serialize(writer, i, ns)
writer.Close()
End Sub
Private Sub DeserializeObject(ByVal filename As String)
Console.WriteLine("Reading with Stream")
' Create an instance of the XmlSerializer.
Dim serializer As New XmlSerializer(GetType(OrderedItem))
' Writing the file requires a Stream.
Dim reader As New FileStream(filename, FileMode.Open)
' Declare an object variable of the type to be deserialized.
Dim i As OrderedItem
' Use the Deserialize method to restore the object's state
' using data from the XML document.
i = CType(serializer.Deserialize(reader), OrderedItem)
' Write out the properties of the object.
Console.Write(i.ItemName & ControlChars.Tab & _
i.Description & ControlChars.Tab & _
i.UnitPrice & ControlChars.Tab & _
i.Quantity & ControlChars.Tab & _
i.LineTotal)
End Sub
End Class
[C#]
using System;
using System.IO;
using System.Xml.Serialization;
// This is the class that will be serialized.
public class OrderedItem {
[XmlElement(Namespace = "http://www.cpandl.com")]
public string ItemName;
[XmlElement(Namespace = "http://www.cpandl.com")]
public string Description;
[XmlElement(Namespace="http://www.cohowinery.com")]
public decimal UnitPrice;
[XmlElement(Namespace = "http://www.cpandl.com")]
public int Quantity;
[XmlElement(Namespace="http://www.cohowinery.com")]
public decimal LineTotal;
// A custom method used to calculate price per item.
public void Calculate() {
LineTotal = UnitPrice * Quantity;
}
}
public class Test {
public static void Main() {
Test t = new Test();
// Write a purchase order.
t.SerializeObject("simple.xml");
t.DeserializeObject("simple.xml");
}
private void SerializeObject(string filename) {
Console.WriteLine("Writing With Stream");
XmlSerializer serializer =
new XmlSerializer(typeof(OrderedItem));
OrderedItem i = new OrderedItem();
i.ItemName = "Widget";
i.Description = "Regular Widget";
i.Quantity = 10;
i.UnitPrice = (decimal) 2.30;
i.Calculate();
// Create an XmlSerializerNamespaces object.
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
// Add two prefix-namespace pairs.
ns.Add("inventory", "http://www.cpandl.com");
ns.Add("money", "http://www.cohowinery.com");
// Create a FileStream to write with.
Stream writer = new FileStream(filename, FileMode.Create);
// Serialize the object, and close the TextWriter
serializer.Serialize(writer, i, ns);
writer.Close();
}
private void DeserializeObject(string filename) {
Console.WriteLine("Reading with Stream");
// Create an instance of the XmlSerializer.
XmlSerializer serializer = new XmlSerializer(typeof(OrderedItem));
// Writing the file requires a Stream.
Stream reader= new FileStream(filename,FileMode.Open);
// Declare an object variable of the type to be deserialized.
OrderedItem i;
/* Use the Deserialize method to restore the object's state
using data from the XML document. */
i = (OrderedItem) serializer.Deserialize(reader);
// Write out the properties of the object.
Console.Write(
i.ItemName + "\t" +
i.Description + "\t" +
i.UnitPrice + "\t" +
i.Quantity + "\t" +
i.LineTotal);
}
}
[C++]
#using <mscorlib.dll>
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;
// This is the class that will be serialized.
public __gc class OrderedItem {
public:
[XmlElement(Namespace = S"http://www.cpandl.com")]
String* ItemName;
[XmlElement(Namespace = S"http://www.cpandl.com")]
String* Description;
[XmlElement(Namespace=S"http://www.cohowinery.com")]
Decimal UnitPrice;
[XmlElement(Namespace = S"http://www.cpandl.com")]
int Quantity;
[XmlElement(Namespace=S"http://www.cohowinery.com")]
Decimal LineTotal;
// A custom method used to calculate price per item.
void Calculate() {
LineTotal = UnitPrice * Quantity;
}
};
void SerializeObject(String* filename) {
Console::WriteLine(S"Writing With Stream");
XmlSerializer* serializer =
new XmlSerializer(__typeof(OrderedItem));
OrderedItem* i = new OrderedItem();
i->ItemName = S"Widget";
i->Description = S"Regular Widget";
i->Quantity = 10;
i->UnitPrice = (Decimal) 2.30;
i->Calculate();
// Create an XmlSerializerNamespaces object.
XmlSerializerNamespaces* ns = new XmlSerializerNamespaces();
// Add two prefix-namespace pairs.
ns->Add(S"inventory", S"http://www.cpandl.com");
ns->Add(S"money", S"http://www.cohowinery.com");
// Create a FileStream to write with.
Stream* writer = new FileStream(filename, FileMode::Create);
// Serialize the object, and close the TextWriter
serializer->Serialize(writer, i, ns);
writer->Close();
}
void DeserializeObject(String* filename) {
Console::WriteLine(S"Reading with Stream");
// Create an instance of the XmlSerializer.
XmlSerializer* serializer = new XmlSerializer(__typeof(OrderedItem));
// Writing the file requires a Stream.
Stream* reader= new FileStream(filename,FileMode::Open);
// Declare an object variable of the type to be deserialized.
OrderedItem* i;
/* Use the Deserialize method to restore the object's state
using data from the XML document. */
i = dynamic_cast<OrderedItem*> (serializer->Deserialize(reader));
// Write out the properties of the object.
Console::Write(S"{0}\t{1}\t{2}\t{3}\t{4}",
i->ItemName, i->Description, __box(i->UnitPrice), __box(i->Quantity), i->LineTotal);
}
int main() {
// Write a purchase order.
SerializeObject(S"simple.xml");
DeserializeObject(S"simple.xml");
}
[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 ファミリ
参照
XmlSerializer クラス | XmlSerializer メンバ | System.Xml.Serialization 名前空間 | XmlSerializer.Serialize オーバーロードの一覧 | XML シリアル化の概要 | 属性を使用した XML シリアル化の制御 | XML シリアル化の例 | XML スキーマ定義ツールと XML シリアル化 | Deserialize