XmlObjectSerializer クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オブジェクトを 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から継承され、データ コントラクト 規則に準拠するオブジェクト (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, 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 要素として書き込みます。 |