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 。
Get |
此方法是保留方法,请不要使用。 在实现 |
Read |
从其 XML 表示形式生成对象。 |
Write |
将对象转换为其 XML 表示形式。 |
产品 | 版本 |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.3, 1.4, 1.6, 2.0, 2.1 |
UWP | 10.0 |