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