XmlObjectSerializer クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オブジェクトを XML ストリームまたはドキュメントとしてシリアル化するために使用する基本クラスを用意します。 このクラスは抽象クラスです。
public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
- 継承
-
XmlObjectSerializer
- 派生
例
パラメーターとして WriteObjectWithInstance
を含む XmlObjectSerializer という名前のメソッドの例を次に示します。 このメソッドは、DataContractSerializer メソッドを呼び出すことで、NetDataContractSerializer と WriteObject のいずれかを使用してオブジェクトをシリアル化します。
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 から継承され、データ コントラクト規則に従っているオブジェクト (DataContractAttribute と DataMemberAttribute を使用して作成されたオブジェクト) をシリアル化および逆シリアル化するために使用されます。
注意 (実装者)
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 の開始要素として書き込みます。 |