IXmlSerializable インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
XML シリアル化および逆シリアル化のカスタム書式を提供します。
public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
- 派生
例
次のコード例は、プライベート フィールドを IXmlSerializable シリアル化する インターフェイスの実装を示しています。
#using <System.Xml.dll>
using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
using namespace System::Xml::Serialization;
public ref class Person: public IXmlSerializable
{
private:
// Private state
String^ personName;
public:
// Constructors
Person( String^ name )
{
personName = name;
}
Person()
{
personName = nullptr;
}
// Xml Serialization Infrastructure
virtual void WriteXml( XmlWriter^ writer )
{
writer->WriteString( personName );
}
virtual void ReadXml( XmlReader^ reader )
{
personName = reader->ReadString();
}
virtual XmlSchema^ GetSchema()
{
return nullptr;
}
// Print
virtual String^ ToString() override
{
return (personName);
}
};
using System;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
public class Person : IXmlSerializable
{
// Private state
private string personName;
// Constructors
public Person (string name)
{
personName = name;
}
public Person ()
{
personName = null;
}
// Xml Serialization Infrastructure
public void WriteXml (XmlWriter writer)
{
writer.WriteString(personName);
}
public void ReadXml (XmlReader reader)
{
personName = reader.ReadString();
}
public XmlSchema GetSchema()
{
return(null);
}
// Print
public override string ToString()
{
return(personName);
}
}
注釈
このインターフェイスを実装するには、2 つの理由があります。 1 つ目は、 によってオブジェクトをシリアル化または逆シリアル化する方法を XmlSerializer制御することです。 たとえば、大きなデータ セットをバッファリングする代わりにデータをバイトにチャンクし、Base64 エンコードを使用してデータがエンコードされるときに発生するインフレを回避することもできます。 シリアル化を制御するには、 メソッドと WriteXml メソッドをReadXml実装して、XML のXmlReader読み取りと書き込みに使用される クラスと XmlWriter クラスを制御します。 この例については、「 方法: シリアル化されたデータをチャンクする」を参照してください。
2 つ目の理由は、スキーマを制御できることです。 これを有効にするには、 をシリアル化可能な型に適用 XmlSchemaProviderAttribute し、スキーマを返す静的メンバーの名前を指定する必要があります。 例については、「XmlSchemaProviderAttribute」をご覧ください。
インターフェイスを実装するクラスには、パラメーターなしのコンストラクターが必要です。 これは クラスの XmlSerializer 要件です。
メソッド
GetSchema() |
このメソッドは予約されているため、使用できません。
|
ReadXml(XmlReader) |
XML 表現からオブジェクトを生成します。 |
WriteXml(XmlWriter) |
オブジェクトを XML 表現に変換します。 |
適用対象
こちらもご覧ください
.NET