IXmlSerializable Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 IXmlSerializable Schnittstelle, die 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. Das erste ist, um zu steuern, wie Ihr Objekt von der XmlSerializerSerialisierung oder Deserialisierung deserialisiert wird. Sie können z. B. Daten in Bytes abteilen, anstatt große Datensätze zu puffern, und vermeiden Sie auch die Inflation, die auftritt, wenn die Daten mithilfe der Base64-Codierung codiert werden. Um die Serialisierung zu steuern, implementieren Sie die und Methoden, um die ReadXml WriteXml XmlReader XmlWriter zum Lesen und Schreiben der XML verwendeten Klassen zu steuern. Ein Beispiel hierfür finden Sie unter How to: Chunk Serialized Data.
Der zweite Grund besteht darin, das Schema zu steuern. Um dies zu aktivieren, müssen Sie den XmlSchemaProviderAttribute seriellen 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 |
ReadXml(XmlReader) |
Generiert ein Objekt aus dessen XML-Darstellung. |
WriteXml(XmlWriter) |
Konvertiert ein Objekt in dessen XML-Darstellung. |