Offre une mise en forme personnalisée pour la sérialisation et la désérialisation XML.
Assembly : System.Xml (dans System.Xml.dll)
Public Interface IXmlSerializable
public interface IXmlSerializable
public interface class IXmlSerializable
type IXmlSerializable = interface end
Le type IXmlSerializable expose les membres suivants.
| Nom | Description | |
|---|---|---|
|
GetSchema | Cette méthode est réservée et ne doit pas être utilisée. Lorsque vous implémentez l'interface IXmlSerializable, vous devez retourner la valeur null (Nothing dans Visual Basic) à partir cette méthode et, si la spécification d'un schéma personnalisé est requise, appliquez à la place XmlSchemaProviderAttribute à la classe. |
|
ReadXml | Génère un objet à partir de sa représentation XML. |
|
WriteXml | Convertit un objet en sa représentation XML. |
Il y a deux raisons d'implémenter cette interface. La première concerne la façon dont l'objet est sérialisé ou désérialisé par le XmlSerializer. Par exemple, vous pouvez conserver le segment de données en octets au lieu de mettre en mémoire tampon d'importants groupes de données ; vous pouvez également éviter l'inflation qui se produit lorsque les données sont encodées à l'aide de l'encodage Base64. Pour contrôler la sérialisation, implémentez les méthodes ReadXml et WriteXml afin de vérifier les classes XmlReader et XmlWriter utilisées pour la lecture et l'écriture du XML. Pour obtenir un exemple, consultez How To: Chunk Serialized Data.
La deuxième concerne la capacité à contrôler le schéma. Pour cela, vous devez appliquer le XmlSchemaProviderAttribute au type sérialisable et spécifier le nom du membre statique qui retourne le schéma. Pour obtenir un exemple, consultez XmlSchemaProviderAttribute.
Une classe qui implémente l'interface doit avoir un constructeur sans paramètre. Il s'agit d'une exigence de la classe XmlSerializer.
Le code suivant illustre une implémentation de l'interface IXmlSerializable qui sérialise un champ privé.
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); } };
.NET Framework
Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Pris en charge dans : 4, 3.5 SP1Pris en charge dans :
Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.