IXmlSerializable Rozhraní
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje vlastní formátování pro serializaci XML a deserializaci.
public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
- Odvozené
Příklady
Následující příklad kódu ukazuje implementaci IXmlSerializable rozhraní, která serializuje privátní pole.
#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);
}
}
Poznámky
Existují dva důvody pro implementaci tohoto rozhraní. První je řídit, jak je objekt serializován nebo deserializován pomocí XmlSerializer. Můžete například ukládat data do bajtů místo ukládání velkých datových sad do vyrovnávací paměti a také se vyhnout inflace, ke které dochází při kódování dat pomocí kódování Base64. Chcete-li řídit serializaci, implementujte ReadXml metody a WriteXml pro řízení XmlReader tříd a XmlWriter používaných ke čtení a zápisu XML. Příklad tohoto postupu najdete v tématu Postupy: Vytváření bloků serializovaných dat.
Druhým důvodem je schopnost řídit schéma. Chcete-li to povolit, musíte použít XmlSchemaProviderAttribute na serializovatelný typ a zadat název statického člena, který vrací schéma. Příklad najdete v XmlSchemaProviderAttribute tomto příkladu.
Třída, která implementuje rozhraní, musí mít konstruktor bez parametrů. To je požadavek XmlSerializer třídy.
Metody
GetSchema() |
Tato metoda je vyhrazena a neměla by se používat. Při implementaci |
ReadXml(XmlReader) |
Vygeneruje objekt ze své reprezentace XML. |
WriteXml(XmlWriter) |
Převede objekt na jeho reprezentaci XML. |