IXmlSerializable IXmlSerializable IXmlSerializable IXmlSerializable Interface

Definition

Stellt benutzerdefinierte Formatierungen für die XML-Serialisierung und -Deserialisierung bereit.Provides custom formatting for XML serialization and deserialization.

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

Beispiele

Der folgende Beispielcode zeigt eine Implementierung der IXmlSerializable -Schnittstelle, die ein privates Feld serialisiert.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);
    }

}

Hinweise

Es gibt zwei Gründe, diese Schnittstelle zu implementieren.There are two reasons to implement this interface. Der erste besteht darin, zu steuern, wie das XmlSerializerObjekt vom serialisiert oder deserialisiert wird.The first is to control how your object is serialized or deserialized by the XmlSerializer. Beispielsweise können Sie Daten in Bytes aufteilen, anstatt große Datasets zu puffern. Außerdem können Sie die Inflation vermeiden, die auftritt, wenn die Daten mit der Base64-Codierung codiert werden.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. Um die Serialisierung zu steuern, implementieren ReadXml Sie WriteXml die Methoden und, XmlReader um XmlWriter die-Klasse und die-Klasse zu steuern, die zum Lesen und Schreiben des 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. Ein Beispiel hierfür finden Sie unter Gewusst wie: SerialisierteSegmente.For an example of this, see How to: Chunk Serialized Data.

Der zweite Grund ist, das Schema Steuern zu können.The second reason is to be able to control the schema. Um dies zu ermöglichen, müssen Sie XmlSchemaProviderAttribute auf den serialisierbaren Typ anwenden und den Namen des statischen Members angeben, der das Schema zurückgibt.To enable this, you must apply the XmlSchemaProviderAttribute to the serializable type, and specify the name of the static member that returns the schema. Ein Beispiel finden Sie im XmlSchemaProviderAttribute.See the XmlSchemaProviderAttribute for an example.

Eine Klasse, die die-Schnittstelle implementiert, muss über einen Parameter losen Konstruktor verfügen.A class that implements the interface must have a parameterless constructor. Dies ist eine Voraussetzung für XmlSerializer die-Klasse.This is a requirement of the XmlSerializer class.

Methoden

GetSchema() GetSchema() GetSchema() GetSchema()

Diese Methode ist reserviert und sollte nicht verwendet werden.This method is reserved and should not be used. Wenn Sie die IXmlSerializable-Schnittstelle implementieren, sollten Sie null (Nothing in Visual Basic) von der Methode zurückgeben und stattdessen das XmlSchemaProviderAttribute auf die Klasse anwenden, wenn ein benutzerdefiniertes Schema erforderlich ist.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) ReadXml(XmlReader) ReadXml(XmlReader) ReadXml(XmlReader)

Generiert ein Objekt aus seiner XML-Darstellung.Generates an object from its XML representation.

WriteXml(XmlWriter) WriteXml(XmlWriter) WriteXml(XmlWriter) WriteXml(XmlWriter)

Konvertiert ein Objekt in seine XML-Darstellung.Converts an object into its XML representation.

Gilt für:

Siehe auch