IXmlSerializable 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为 XML 序列化和反序列化提供自定义格式。
public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
- 派生
示例
以下示例代码演示序列化私有字段的 IXmlSerializable 接口的实现。
#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);
}
}
注解
实现此接口有两个原因。 第一种是控制 对象的序列化或反序列化 XmlSerializer方式。 例如,可以将数据分块成字节而不是缓冲大型数据集,还可以避免使用 Base64 编码对数据进行编码时发生的膨胀。 若要控制序列化,请实现 ReadXml 和 方法来控制XmlReader用于读取和写入 XML 的 和 XmlWriterWriteXml 类。 有关此示例,请参阅 如何:对序列化的数据进行区块。
第二个原因是能够控制架构。 若要启用此功能,必须将 应用于 XmlSchemaProviderAttribute 可序列化类型,并指定返回架构的静态成员的名称。 有关示例,请参见XmlSchemaProviderAttribute。
实现 接口的类必须具有无参数构造函数。 这是 类的要求 XmlSerializer 。
方法
GetSchema() |
此方法是保留方法,请不要使用。 在实现 |
ReadXml(XmlReader) |
从其 XML 表示形式生成对象。 |
WriteXml(XmlWriter) |
将对象转换为其 XML 表示形式。 |