次の方法で共有


XmlObjectSerializer クラス

定義

オブジェクトを XML ストリームまたはドキュメントとしてシリアル化するために使用する基本クラスを提供します。 このクラスは抽象クラスです。

public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
継承
XmlObjectSerializer
派生

次の例は、パラメーターとして XmlObjectSerializer を含む WriteObjectWithInstance という名前のメソッドを示しています。 このメソッドは、WriteObject メソッドを呼び出して、DataContractSerializer または NetDataContractSerializer を使用してオブジェクトをシリアル化します。

public class Test
{
    private void WriteObjectWithInstance(XmlObjectSerializer xm, Company graph,
       string fileName)
    {
        // Use either the XmlDataContractSerializer or NetDataContractSerializer,
        // or any other class that inherits from XmlObjectSerializer to write with.
        Console.WriteLine(xm.GetType());
        FileStream fs = new FileStream(fileName, FileMode.Create);
        XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(fs);
        xm.WriteObject(writer, graph);
        Console.WriteLine("Done writing {0}", fileName);
    }

    private void Run()
    {
        // Create the object to write to a file.
        Company graph = new Company();
        graph.Name = "cohowinery.com";

        // Create a DataContractSerializer and a NetDataContractSerializer.
        // Pass either one to the WriteObjectWithInstance method.
        DataContractSerializer dcs = new DataContractSerializer(typeof(Company));
        NetDataContractSerializer ndcs = new NetDataContractSerializer();
        WriteObjectWithInstance(dcs, graph, @"datacontract.xml");
        WriteObjectWithInstance(ndcs, graph, @"netDatacontract.xml");
    }

    [DataContract]
    public class Company
    {
        [DataMember]
        public string Name;
    }

    static void Main()
    {
        try
        {
            Console.WriteLine("Starting");
            Test t = new Test();
            t.Run();
            Console.WriteLine("Done");
            Console.ReadLine();
        }

        catch (InvalidDataContractException iExc)
        {
            Console.WriteLine("You have an invalid data contract: ");
            Console.WriteLine(iExc.Message);
            Console.ReadLine();
        }

        catch (SerializationException serExc)
        {
            Console.WriteLine("There is a problem with the instance:");
            Console.WriteLine(serExc.Message);
            Console.ReadLine();
        }

        catch (QuotaExceededException qExc)
        {
            Console.WriteLine("The quota has been exceeded");
            Console.WriteLine(qExc.Message);
            Console.ReadLine();
        }
        catch (Exception exc)
        {
            Console.WriteLine(exc.Message);
            Console.WriteLine(exc.ToString());
            Console.ReadLine();
        }
    }
Public Class Test
    
    Private Sub WriteObjectWithInstance(ByVal xm As XmlObjectSerializer, _
      ByVal graph As Company, ByVal fileName As String) 
        ' Use either the XmlDataContractSerializer or NetDataContractSerializer,
        ' or any other class that inherits from XmlObjectSerializer to write with.
        Console.WriteLine(xm.GetType())
        Dim fs As New FileStream(fileName, FileMode.Create)
        Dim writer As XmlDictionaryWriter = XmlDictionaryWriter.CreateTextWriter(fs)
        xm.WriteObject(writer, graph)
        Console.WriteLine("Done writing {0}", fileName)
    
    End Sub 
    
    
    Private Sub Run() 
        ' Create the object to write to a file.
        Dim graph As New Company()
        graph.Name = "cohowinery.com"
        
        ' Create a DataContractSerializer and a NetDataContractSerializer.
        ' Pass either one to the WriteObjectWithInstance method.
        Dim dcs As New DataContractSerializer(GetType(Company))
        Dim ndcs As New NetDataContractSerializer()
        WriteObjectWithInstance(dcs, graph, "datacontract.xml")
        WriteObjectWithInstance(ndcs, graph, "netDatacontract.xml")
    
    End Sub 
    
    <DataContract()>  _
    Public Class Company
        <DataMember()>  _
        Public Name As String
    End Class 
    
    
    Shared Sub Main() 
        Try
            Console.WriteLine("Starting")
            Dim t As New Test()
            t.Run()
            Console.WriteLine("Done")
            Console.ReadLine()
        
        Catch iExc As InvalidDataContractException
            Console.WriteLine("You have an invalid data contract: ")
            Console.WriteLine(iExc.Message)
            Console.ReadLine()
        
        Catch serExc As SerializationException
            Console.WriteLine("There is a problem with the instance:")
            Console.WriteLine(serExc.Message)
            Console.ReadLine()
        
        Catch qExc As QuotaExceededException
            Console.WriteLine("The quota has been exceeded")
            Console.WriteLine(qExc.Message)
            Console.ReadLine()
        Catch exc As Exception
            Console.WriteLine(exc.Message)
            Console.WriteLine(exc.ToString())
            Console.ReadLine()
        End Try
    
    End Sub 
End Class

注釈

XmlObjectSerializer を拡張して、オブジェクトをシリアル化および逆シリアル化する独自のシリアライザーを作成します。 DataContractSerializer クラスと NetDataContractSerializer クラスの両方が XmlObjectSerializer から継承され、データ コントラクト 規則に準拠するオブジェクト (DataContractAttributeDataMemberAttributeを使用して作成されたオブジェクト) をシリアル化および逆シリアル化するために使用されます。

注意 (実装者)

XmlObjectSerializerから継承する場合は、WriteStartObject(XmlDictionaryWriter, Object)WriteObjectContent(XmlDictionaryWriter, Object)WriteEndObject(XmlDictionaryWriter)のメンバーをオーバーライドする必要があります。 さらに、読み取りと逆シリアル化のために、IsStartObject メソッドと ReadObject メソッドを実装する必要があります。

コンストラクター

XmlObjectSerializer()

XmlObjectSerializer クラスの新しいインスタンスを初期化します。

メソッド

Equals(Object)

指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
IsStartObject(XmlDictionaryReader)

XmlDictionaryReader が読み取り可能な XML 要素の上に配置されるかどうかを示す値を取得します。

IsStartObject(XmlReader)

XmlReader が読み取り可能な XML 要素の上に配置されるかどうかを示す値を取得します。

MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
ReadObject(Stream)

Stream を使用して XML ストリームまたはドキュメントを読み取り、逆シリアル化されたオブジェクトを返します。

ReadObject(XmlDictionaryReader, Boolean)

XmlDictionaryReader を使用して XML ストリームまたはドキュメントを読み取り、逆シリアル化されたオブジェクトを返します。また、シリアライザーがデータを読み取る前に読み取ることができるかどうかを指定することもできます。

ReadObject(XmlDictionaryReader)

XmlDictionaryReader を使用して XML ドキュメントまたはストリームを読み取り、逆シリアル化されたオブジェクトを返します。

ReadObject(XmlReader, Boolean)

XmlReader を使用して XML ドキュメントまたはストリームを読み取り、逆シリアル化されたオブジェクトを返します。また、シリアライザーがデータを読み取る前に読み取ることができるかどうかを指定することもできます。

ReadObject(XmlReader)

XmlReader を使用して XML ドキュメントまたはストリームを読み取り、逆シリアル化されたオブジェクトを返します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
WriteEndObject(XmlDictionaryWriter)

オブジェクト データの末尾を終了 XML 要素として、XmlDictionaryWriterを使用して XML ドキュメントまたはストリームに書き込みます。

WriteEndObject(XmlWriter)

オブジェクト データの末尾を終了 XML 要素として、XmlWriterを使用して XML ドキュメントまたはストリームに書き込みます。

WriteObject(Stream, Object)

指定した Streamを使用して、オブジェクトの完全なコンテンツ (開始、コンテンツ、終了) を XML ドキュメントまたはストリームに書き込みます。

WriteObject(XmlDictionaryWriter, Object)

指定した XmlDictionaryWriterを使用して、オブジェクトの完全なコンテンツ (開始、コンテンツ、終了) を XML ドキュメントまたはストリームに書き込みます。

WriteObject(XmlWriter, Object)

指定した XmlWriterを使用して、オブジェクトの完全なコンテンツ (開始、コンテンツ、終了) を XML ドキュメントまたはストリームに書き込みます。

WriteObjectContent(XmlDictionaryWriter, Object)

指定した XmlDictionaryWriterを使用して、オブジェクトの内容のみを XML ドキュメントまたはストリームに書き込みます。

WriteObjectContent(XmlWriter, Object)

指定した XmlWriterを使用して、オブジェクトの内容のみを XML ドキュメントまたはストリームに書き込みます。

WriteStartObject(XmlDictionaryWriter, Object)

指定した XmlDictionaryWriterを使用して、オブジェクトのデータの先頭を開始 XML 要素として書き込みます。

WriteStartObject(XmlWriter, Object)

指定した XmlWriterを使用して、オブジェクトのデータの先頭を開始 XML 要素として書き込みます。

適用対象

こちらもご覧ください