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 接口时,应从此方法中返回 nullNothing Visual Basic),而如果需要指定自定义架构,请将 XmlSchemaProviderAttribute 应用于类。

ReadXml(XmlReader)

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

WriteXml(XmlWriter)

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

适用于

另请参阅