IXmlSerializable.ReadXml(XmlReader) Metodo

Definizione

Genera un oggetto dalla relativa rappresentazione 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)

Parametri

reader
XmlReader

Flusso XmlReader da cui viene deserializzato l'oggetto.

Esempio

Nell'esempio seguente viene illustrata un'implementazione del ReadXml metodo .

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

Nell'esempio seguente viene illustrato l'uso della XmlSerializer classe per deserializzare questo oggetto.

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

Commenti

Il ReadXml metodo deve ricostituire l'oggetto usando le informazioni scritte dal WriteXml metodo .

Quando viene chiamato questo metodo, il lettore viene posizionato sul tag iniziale che esegue il wrapping delle informazioni per il tipo. Ovvero, direttamente sul tag iniziale che indica l'inizio di un oggetto serializzato. Quando termina, questo metodo deve avere letto l'intero elemento dall'inizio alla fine, incluso tutto il relativo contenuto. A differenza del WriteXml metodo , il framework non gestisce automaticamente l'elemento wrapper. L'implementazione deve eseguire questa operazione. Se non si osservano queste regole di posizionamento, è possibile che il codice generi eccezioni di runtime impreviste o dati danneggiati.

Quando si implementa questo metodo, è consigliabile considerare la possibilità che un utente malintenzionato possa fornire una rappresentazione XML ben formata ma non valida per disabilitare o modificare in altro modo il comportamento dell'applicazione.

Si applica a