Partager via


IXmlSerializable.ReadXml(XmlReader) Méthode

Définition

Génère un objet à partir de sa représentation XML.

public:
 void ReadXml(System::Xml::XmlReader ^ reader);
public void ReadXml (System.Xml.XmlReader reader);
abstract member ReadXml : System.Xml.XmlReader -> unit
Public Sub ReadXml (reader As XmlReader)

Paramètres

reader
XmlReader

Flux XmlReader duquel l’objet est désérialisé.

Exemples

L’exemple suivant illustre une implémentation de la ReadXml méthode.

virtual void ReadXml( XmlReader^ reader )
{
   personName = reader->ReadString();
}
public void ReadXml (XmlReader reader)
{
    personName = reader.ReadString();
}

L’exemple suivant illustre l’utilisation de la XmlSerializer classe pour désérialiser cet objet.

#using <System.Xml.dll>
#using <System.dll>
#using <Person.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;

int main()
{
   XmlSerializer^ serializer = gcnew XmlSerializer( Person::typeid );
   FileStream^ file = gcnew FileStream( "test.xml",FileMode::Open );
   Person^ aPerson = dynamic_cast<Person^>(serializer->Deserialize( file ));
   Console::WriteLine( aPerson );
}
using System;
using System.IO;
using System.Xml.Serialization;

public class Reader {

  public static void Main() {
    XmlSerializer serializer = new XmlSerializer(typeof(Person));
    FileStream file = new FileStream("test.xml", FileMode.Open);
    Person aPerson = (Person) serializer.Deserialize(file);
    Console.WriteLine(aPerson);
  }
}

Remarques

La ReadXml méthode doit reconsituer votre objet à l’aide des informations écrites par la WriteXml méthode.

Lorsque cette méthode est appelée, le lecteur est positionné sur la balise de début qui encapsule les informations de votre type. Autrement dit, directement sur la balise de début qui indique le début d’un objet sérialisé. Lorsque cette méthode retourne, elle doit avoir lu l’intégralité de l’élément du début à la fin, y compris tout son contenu. Contrairement à la WriteXml méthode, l’infrastructure ne gère pas automatiquement l’élément wrapper. Votre implémentation doit le faire. L’échec de l’observation de ces règles de positionnement peut entraîner le code pour générer des exceptions d’exécution inattendues ou des données endommagées.

Lors de l’implémentation de cette méthode, vous devez envisager la possibilité qu’un utilisateur malveillant puisse fournir une représentation XML bien formée mais non valide afin de désactiver ou de modifier le comportement de votre application.

S’applique à