Freigeben über


IXmlSerializable-Schnittstelle

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

Namespace: System.Xml.Serialization
Assembly: System.Xml (in system.xml.dll)

Syntax

'Declaration
Public Interface IXmlSerializable
'Usage
Dim instance As IXmlSerializable
public interface IXmlSerializable
public interface class IXmlSerializable
public interface IXmlSerializable
public interface IXmlSerializable

Hinweise

Für ein Implementieren dieser Schnittstelle gibt es zwei Gründe. Erstens, um steuern zu können, wie das Objekt vom XmlSerializer serialisiert oder deserialisiert wird. Beispielsweise können Sie anstelle des Pufferns großer Datasets Daten in Bytes aufteilen und so den Datenzuwachs vermeiden, der beim Codieren der Daten mit der Base64-Codierung entsteht. Zum Steuern der Serialisierung implementieren Sie die ReadXml-Methode und die WriteXml-Methode, um die zum Lesen und Schreiben von XML verwendete XmlReader-Klasse und XmlWriter-Klasse zu steuern. Ein Beispiel dafür finden Sie unter Gewusst wie: Segmentieren serialisierter Daten.

Der zweite Grund besteht in der Möglichkeit, das Schema steuern zu können. Dazu müssen Sie das XmlSchemaProviderAttribute auf den serialisierbaren Typ anwenden und den Namen des statischen Members angeben, der das Schema zurückgibt. Ein Beispiel finden Sie unter dem XmlSchemaProviderAttribute.

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

Beispiel

Im folgenden Beispielcode wird eine Implementierung der IXmlSerializable-Schnittstelle veranschaulicht, mit der ein privates Feld serialisiert wird.

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

}
#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);
   }
};
import System.*;
import System.Xml.*;
import System.Xml.Schema.*;
import System.Xml.Serialization.*;

public class Person implements IXmlSerializable
{
    // Private state
    private String personName;

    // Constructors
    public Person(String name)
    {
        personName = name;
    } //Person

    public Person()
    {
        personName = null;
    } //Person

    // Xml Serialization Infrastructure
    public void WriteXml(XmlWriter writer)
    {
        writer.WriteString(personName);
    } //WriteXml
    public void ReadXml(XmlReader reader)
    {
        personName = reader.ReadString();
    } //ReadXml

    public XmlSchema GetSchema()
    {
        return null;
    } //GetSchema

    // Print
    public String ToString()
    {
        return personName;
    } //ToString
} //Person 

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

IXmlSerializable-Member
System.Xml.Serialization-Namespace

Weitere Ressourcen

Einführung in die XML-Serialisierung