次の方法で共有


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