Freigeben über


IXmlSerializable.ReadXml(XmlReader) Methode

Definition

Generiert ein Objekt aus dessen XML-Darstellung.

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)

Parameter

reader
XmlReader

Der XmlReader-Stream, aus dem das Objekt deserialisiert wird.

Beispiele

Das folgende Beispiel veranschaulicht eine Implementierung der ReadXml -Methode.

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

Das folgende Beispiel veranschaulicht die Verwendung der XmlSerializer -Klasse zum Deserialisieren dieses Objekts.

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

Hinweise

Die ReadXml -Methode muss Ihr -Objekt mithilfe der von der WriteXml -Methode geschriebenen Informationen neu konstituieren.

Wenn diese Methode aufgerufen wird, wird der Reader auf dem Starttag positioniert, das die Informationen für Ihren Typ umschließt. Das heißt, direkt auf dem Starttag, das den Anfang eines serialisierten Objekts angibt. Wenn diese Methode zurückgibt, muss sie das gesamte Element von Anfang bis Ende gelesen haben, einschließlich des gesamten Inhalts. Im Gegensatz zur WriteXml -Methode verarbeitet das Framework das Wrapperelement nicht automatisch. Ihre Implementierung muss dies tun. Die Nichteinhaltung dieser Positionierungsregeln kann dazu führen, dass Code unerwartete Laufzeitausnahmen generiert oder Daten beschädigt.

Bei der Implementierung dieser Methode sollten Sie die Möglichkeit in Betracht ziehen, dass ein böswilliger Benutzer eine wohlgeformte, aber ungültige XML-Darstellung bereitstellt, um das Verhalten Ihrer Anwendung zu deaktivieren oder anderweitig zu ändern.

Gilt für: