IXmlSerializable Rozhraní

Definice

Poskytuje vlastní formátování serializace a deserializace XML.Provides custom formatting for XML serialization and deserialization.

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
Odvozené

Příklady

Následující příklad kódu ukazuje implementaci IXmlSerializable rozhraní, které serializovat soukromé pole.The following example code shows an implementation of the IXmlSerializable interface that serializes a private field.

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

Poznámky

Existují dva důvody pro implementaci tohoto rozhraní.There are two reasons to implement this interface. První je určit, jak je objekt serializován nebo deserializován pomocí XmlSerializer .The first is to control how your object is serialized or deserialized by the XmlSerializer. Například můžete zablokovat data v bajtech namísto ukládání velkých datových sad do vyrovnávací paměti a také se vyhnout inflace, ke kterému dochází při kódování dat pomocí kódování Base64.For example, you can chunk data into bytes instead of buffering large data sets, and also avoid the inflation that occurs when the data is encoded using Base64 encoding. Chcete-li řídit serializaci, implementujte ReadXml WriteXml metody a pro XmlReader řízení XmlWriter tříd a používaných pro čtení a zápis XML.To control the serialization, implement the ReadXml and WriteXml methods to control the XmlReader and XmlWriter classes used to read and write the XML. Příklad tohoto postupu naleznete v tématu How to: Serializovan data v bloku.For an example of this, see How to: Chunk Serialized Data.

Druhým důvodem je, aby bylo možné řídit schéma.The second reason is to be able to control the schema. Chcete-li tuto možnost povolit, je nutné použít na XmlSchemaProviderAttribute serializovatelný typ a zadat název statického člena, který vrací schéma.To enable this, you must apply the XmlSchemaProviderAttribute to the serializable type, and specify the name of the static member that returns the schema. Příklad najdete v tématu XmlSchemaProviderAttribute .See the XmlSchemaProviderAttribute for an example.

Třída, která implementuje rozhraní, musí mít konstruktor bez parametrů.A class that implements the interface must have a parameterless constructor. Toto je požadavek XmlSerializer třídy.This is a requirement of the XmlSerializer class.

Metody

GetSchema()

Tato metoda je vyhrazená a neměla by se používat.This method is reserved and should not be used. Při implementaci IXmlSerializable rozhraní byste měli null Nothing z této metody vracet (v Visual Basic) a místo toho je třeba zadat vlastní schéma, použít XmlSchemaProviderAttribute pro třídu.When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the XmlSchemaProviderAttribute to the class.

ReadXml(XmlReader)

Vygeneruje objekt ze své reprezentace XML.Generates an object from its XML representation.

WriteXml(XmlWriter)

Převede objekt na jeho reprezentaci XML.Converts an object into its XML representation.

Platí pro