IXmlSerializable Schnittstelle

Definition

Stellt eine benutzerdefinierte Formatierung für die XML-Serialisierung und -Deserialisierung bereit.

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

Beispiele

Der folgende Beispielcode zeigt eine Implementierung der Schnittstelle, die IXmlSerializable ein privates Feld serialisiert.

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

Hinweise

Es gibt zwei Gründe, diese Schnittstelle zu implementieren. Die erste besteht darin, zu steuern, wie Ihr Objekt durch serialisiert oder deserialisiert wird XmlSerializer. Beispielsweise können Sie Daten in Bytes aufteilen, anstatt große Datasets zu puffern, und außerdem die Inflation vermeiden, die auftritt, wenn die Daten mithilfe der Base64-Codierung codiert werden. Um die Serialisierung zu steuern, implementieren Sie die ReadXml Methoden und WriteXml , um die XmlReader Zum Lesen und XmlWriter Schreiben des XML-Codes verwendeten Klassen und zu steuern. Ein Beispiel hierfür finden Sie unter Vorgehensweise: Chunk Serialisierte Daten.

Der zweite Grund besteht darin, das Schema steuern zu können. Um dies zu aktivieren, müssen Sie den XmlSchemaProviderAttribute auf den serialisierbaren Typ anwenden und den Namen des statischen Elements angeben, das das Schema zurückgibt. Ein Beispiel finden Sie im XmlSchemaProviderAttribute.

Eine Klasse, die die Schnittstelle implementiert, muss über einen parameterlosen Konstruktor verfügen. Dies ist eine Anforderung der XmlSerializer -Klasse.

Methoden

GetSchema()

Diese Methode ist reserviert und sollte nicht verwendet werden. Bei der Implementierung der IXmlSerializable-Schnittstelle sollte von dieser Methode null (Nothing in Visual Basic) zurückgegeben werden. Wenn die Angabe eines benutzerdefinierten Schemas erforderlich ist, sollten Sie stattdessen das das XmlSchemaProviderAttribute auf die Klasse anwenden.

ReadXml(XmlReader)

Generiert ein Objekt aus dessen XML-Darstellung.

WriteXml(XmlWriter)

Konvertiert ein Objekt in dessen XML-Darstellung.

Gilt für

Siehe auch