Bagikan melalui


IXmlSerializable Antarmuka

Definisi

Menyediakan pemformatan kustom untuk serialisasi XML dan deserialisasi.

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
Turunan

Contoh

Contoh kode berikut menunjukkan implementasi IXmlSerializable antarmuka yang menserialisasikan bidang privat.

#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);
    }
}

Keterangan

Ada dua alasan untuk mengimplementasikan antarmuka ini. Yang pertama adalah mengontrol bagaimana objek Anda diserialisasikan atau dideserialisasi oleh XmlSerializer. Misalnya, Anda dapat memotong data menjadi byte alih-alih menyangga himpunan data besar, dan juga menghindari inflasi yang terjadi ketika data dikodekan menggunakan pengodean Base64. Untuk mengontrol serialisasi, terapkan ReadXml metode dan WriteXml untuk mengontrol XmlReader kelas dan XmlWriter yang digunakan untuk membaca dan menulis XML. Untuk contohnya, lihat Cara: Memotong Data Berseri.

Alasan kedua adalah untuk dapat mengontrol skema. Untuk mengaktifkan ini, Anda harus menerapkan XmlSchemaProviderAttribute ke jenis yang dapat diserialisasikan, dan menentukan nama anggota statis yang mengembalikan skema. XmlSchemaProviderAttribute Lihat contohnya.

Kelas yang mengimplementasikan antarmuka harus memiliki konstruktor tanpa parameter. Ini adalah persyaratan XmlSerializer kelas.

Metode

GetSchema()

Metode ini dicadangkan dan tidak boleh digunakan. Saat menerapkan IXmlSerializable antarmuka, Anda harus mengembalikan null (Nothing di Visual Basic) dari metode ini, dan sebaliknya, jika menentukan skema kustom diperlukan, terapkan XmlSchemaProviderAttribute ke kelas .

ReadXml(XmlReader)

Menghasilkan objek dari representasi XML-nya.

WriteXml(XmlWriter)

Mengonversi objek menjadi representasi XML-nya.

Berlaku untuk

Lihat juga