XmlSerializer.Serialize メソッド (XmlWriter, Object, XmlSerializerNamespaces)
指定した Object をシリアル化し、指定した XmlWriter を使用し、指定した名前空間を参照して、生成された XML ドキュメントをファイルに書き込みます。
Overloads Public Sub Serialize( _
ByVal xmlWriter As XmlWriter, _ ByVal o As Object, _ ByVal namespaces As XmlSerializerNamespaces _)
[C#]
public void Serialize(XmlWriterxmlWriter,objecto,XmlSerializerNamespacesnamespaces);
[C++]
public: void Serialize(XmlWriter* xmlWriter,Object* o,XmlSerializerNamespaces* namespaces);
[JScript]
public function Serialize(
xmlWriter : XmlWriter,o : Object,namespaces : XmlSerializerNamespaces);
パラメータ
- xmlWriter
XML ドキュメントを書き込むために使用する XmlWriter 。 - o
シリアル化する Object 。 - namespaces
オブジェクトが参照する XmlSerializerNamespaces 。
解説
Serialize メソッドを呼び出すと、オブジェクトのパブリック フィールドとパブリックな読み書き可能プロパティが XML に変換されます。メソッド、インデクサ、プライベート フィールド、および読み取り専用プロパティはシリアル化されません。パブリックとプライベート両方のフィールドとプロパティをすべてシリアル化するには、 BinaryFormatter を使用します。
xmlWriter パラメータを使用して、XML ドキュメントに書き込むようにデザインされている、抽象 XmlWriter クラスから派生したオブジェクトを指定します。 XmlTextWriter は XmlWriter から派生します。
使用例
[Visual Basic, C#, C++] XmlWriter を使用して、オブジェクトをシリアル化する例を次に示します。この例では、 XmlSerializerNamespaces も作成し、そのオブジェクトに 2 つの名前空間を追加します。 XmlElementAttribute クラスのいくつかのインスタンスが、各要素の名前空間を指定するためにクラス メンバに適用されています。
Imports System
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Serialization
' 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")
End Sub
Private Sub SerializeObject(ByVal filename As String)
Console.WriteLine("Writing With XmlTextWriter")
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 namespaces with prefixes.
ns.Add("inventory", "http://www.cpandl.com")
ns.Add("money", "http://www.cohowinery.com")
' Create an XmlTextWriter using a FileStream.
Dim fs As New FileStream(filename, FileMode.Create)
Dim writer As New XmlTextWriter(fs, New UTF8Encoding())
' Serialize using the XmlTextWriter.
serializer.Serialize(writer, i, ns)
writer.Close()
End Sub
End Class
[C#]
using System;
using System.IO;
using System.Text;
using System.Xml;
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");
}
private void SerializeObject(string filename)
{
Console.WriteLine("Writing With XmlTextWriter");
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 namespaces with prefixes.
ns.Add("inventory", "http://www.cpandl.com");
ns.Add("money", "http://www.cohowinery.com");
// Create an XmlTextWriter using a FileStream.
Stream fs = new FileStream(filename, FileMode.Create);
XmlWriter writer =
new XmlTextWriter(fs, new UTF8Encoding());
// Serialize using the XmlTextWriter.
serializer.Serialize(writer, i, ns);
writer.Close();
}
}
[C++]
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Xml;
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 XmlTextWriter");
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 namespaces with prefixes.
ns->Add(S"inventory", S"http://www.cpandl.com");
ns->Add(S"money", S"http://www.cohowinery.com");
// Create an XmlTextWriter using a FileStream.
Stream* fs = new FileStream(filename, FileMode::Create);
XmlWriter* writer =
new XmlTextWriter(fs, new UTF8Encoding());
// Serialize using the XmlTextWriter.
serializer->Serialize(writer, i, ns);
writer->Close();
}
int main()
{
// Write a purchase order.
SerializeObject(S"simple.xml");
}
<?xml version="1.0"?>
<OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
<inventory:ItemName>Widget</inventory:ItemName>
<inventory:Description>Regular Widget</inventory:Description>
<money:UnitPrice>2.3</money:UnitPrice>
<inventory:Quantity>10</inventory:Quantity>
<money:LineTotal>23</money:LineTotal>
</OrderedItem>
[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