IXmlSerializable IXmlSerializable IXmlSerializable IXmlSerializable Interface

Определение

Предоставляет пользовательский формат для сериализации и десериализации XML.Provides custom formatting for XML serialization and deserialization.

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
Производный

Примеры

В следующем примере кода показана реализация IXmlSerializable интерфейса, который сериализует закрытое поле.The following example code shows an implementation of the IXmlSerializable interface that serializes a private field.

#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);
    }

}

Комментарии

Реализовать этот интерфейс можно по двум причинам.There are two reasons to implement this interface. Первый заключается в управлении способом сериализации или десериализации объекта с XmlSerializerпомощью.The first is to control how your object is serialized or deserialized by the XmlSerializer. Например, можно поблочировать данные в байты вместо буферизации больших наборов данных, а также избежать инфляции, возникающей при кодировании данных с помощью кодировки Base64.For example, you can chunk data into bytes instead of buffering large data sets, and also avoid the inflation that occurs when the data is encoded using Base64 encoding. ReadXml Для управления сериализацией реализуйте методы и WriteXml для управления классами и XmlReader XmlWriter , используемыми для чтения и записи XML.To control the serialization, implement the ReadXml and WriteXml methods to control the XmlReader and XmlWriter classes used to read and write the XML. Пример см. в разделе как Фрагментированные сериализованныеданные.For an example of this, see How to: Chunk Serialized Data.

Вторая причина — возможность управлять схемой.The second reason is to be able to control the schema. Чтобы включить эту функцию, необходимо применить XmlSchemaProviderAttribute к сериализуемым типу и указать имя статического члена, который возвращает схему.To enable this, you must apply the XmlSchemaProviderAttribute to the serializable type, and specify the name of the static member that returns the schema. Пример см. в разделе XmlSchemaProviderAttribute.See the XmlSchemaProviderAttribute for an example.

Класс, реализующий интерфейс, должен иметь конструктор без параметров.A class that implements the interface must have a parameterless constructor. Это требование для XmlSerializer класса.This is a requirement of the XmlSerializer class.

Методы

GetSchema() GetSchema() GetSchema() GetSchema()

Данный метод зарезервирован и не используется.This method is reserved and should not be used. При реализации интерфейса IXmlSerializable этот метод должен возвращать значение null (Nothing в Visual Basic), а если необходимо указать пользовательскую схему, то вместо использования метода следует применить XmlSchemaProviderAttribute к классу.When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the XmlSchemaProviderAttribute to the class.

ReadXml(XmlReader) ReadXml(XmlReader) ReadXml(XmlReader) ReadXml(XmlReader)

Создает объект из представления XML.Generates an object from its XML representation.

WriteXml(XmlWriter) WriteXml(XmlWriter) WriteXml(XmlWriter) WriteXml(XmlWriter)

Преобразует объект в представление XML.Converts an object into its XML representation.

Применяется к

Дополнительно