
IXmlSerializable Interface
Assembly: System.Xml (in system.xml.dll)
There are two reasons to implement this interface. The first is to control how your object is serialized or deserialized by the XmlSerializer. 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. To control the serialization, implement the ReadXml and WriteXml methods to control the XmlReader and XmlWriter classes used to read and write the XML. For an example of this, see How To: Chunk Serialized Data.
The second reason is to be able to control the schema. To enable this, you must apply the XmlSchemaProviderAttribute to the serializable type, and specify the name of the static member that returns the schema. See the XmlSchemaProviderAttribute for an example.
A class that implements the interface must have a parameterless constructor. This is a requirement of the XmlSerializer class.
The following example code shows an implementation of the IXmlSerializable interface that serializes a private field.
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); } }
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
Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.Reference
IXmlSerializable MembersSystem.Xml.Serialization Namespace