次の方法で共有


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 クラスから派生したオブジェクトを指定します。 XmlTextWriterXmlWriter から派生します。

使用例

[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