语言

IXmlSerializable 接口

定义

为 XML 序列化和反序列化提供自定义格式。

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
派生

示例

下面的示例代码演示了序列化专用字段的接口的实现 IXmlSerializable 。

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 编码对数据进行编码时发生的膨胀。 若要控制序列化,请实现ReadXmlWriteXml控制用于读取和写入 XML 的XmlReader类和XmlWriter方法。 有关此示例,请参阅 “如何:区块序列化数据”。

第二个原因是能够控制架构。 若要启用此功能,必须应用 XmlSchemaProviderAttribute 可序列化类型,并指定返回架构的静态成员的名称。 请参阅有关 XmlSchemaProviderAttribute 示例。

实现接口的类必须具有无参数构造函数。 这是类的要求 XmlSerializer 。

方法

名称 说明
GetSchema()

此方法是保留的,不应使用。 实现 IXmlSerializable 接口时,应从此方法中返回 null (Nothing Visual Basic),而如果需要指定自定义架构,请将 XmlSchemaProviderAttribute 应用于类。

ReadXml(XmlReader)

从其 XML 表示形式生成对象。

WriteXml(XmlWriter)

将对象转换为其 XML 表示形式。

适用于

另请参阅