次の方法で共有


XmlObjectSerializer クラス

定義

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

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

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

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)

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

IsStartObject(XmlReader)

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

MemberwiseClone()

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

(継承元 Object)
ReadObject(Stream)

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

ReadObject(XmlDictionaryReader)

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

ReadObject(XmlDictionaryReader, Boolean)

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

ReadObject(XmlReader)

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

ReadObject(XmlReader, Boolean)

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

ToString()

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

(継承元 Object)
WriteEndObject(XmlDictionaryWriter)

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

WriteEndObject(XmlWriter)

XmlWriter を使用して、オブジェクト データの末尾を XML の終了要素として 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 の開始要素として書き込みます。

適用対象

こちらもご覧ください