IXmlSerializable.ReadXml-Methode
Generiert ein Objekt aus seiner XML-Darstellung.
Namespace: System.Xml.Serialization
Assembly: System.Xml (in system.xml.dll)
Syntax
'Declaration
Sub ReadXml ( _
reader As XmlReader _
)
'Usage
Dim instance As IXmlSerializable
Dim reader As XmlReader
instance.ReadXml(reader)
void ReadXml (
XmlReader reader
)
void ReadXml (
XmlReader^ reader
)
void ReadXml (
XmlReader reader
)
function ReadXml (
reader : XmlReader
)
Parameter
- reader
Der XmlReader-Stream, aus dem das Objekt deserialisiert wird.
Hinweise
Die ReadXml-Methode muss das Objekt anhand der Informationen wiederherstellen, die von der WriteXml-Methode geschrieben wurden.
Wenn diese Methode aufgerufen wird, wird der Reader am Anfang des Elements positioniert, das die Informationen für den Typ umschließt. Das heißt, unmittelbar vor dem Starttag, das den Anfang eines serialisierten Objekts angibt. Wenn diese Methode beendet wird, muss sie das gesamte Element von Anfang bis Ende einschließlich des gesamten Inhalts gelesen haben. Im Gegensatz zur WriteXml-Methode behandelt das Framework das Wrapperelement nicht automatisch. Dies ist Aufgabe der Implementierung. Wenn Sie diese Positionierungsregeln nicht beachten, kann dies dazu führen, dass Code unerwartete Laufzeitausnahmen oder beschädigte Daten generiert.
Beim Implementieren dieser Methode sollten Sie die Möglichkeit berücksichtigen, dass ein böswilliger Benutzer eine wohlgeformte, aber ungültige XML-Darstellung einbringt.
Beispiel
Im folgenden Beispiel wird eine Implementierung der ReadXml-Methode veranschaulicht.
public void ReadXml (XmlReader reader)
{
personName = reader.ReadString();
}
virtual void ReadXml( XmlReader^ reader )
{
personName = reader->ReadString();
}
public void ReadXml(XmlReader reader)
{
personName = reader.ReadString();
} //ReadXml
Im folgenden Beispiel wird die Verwendung der XmlSerializer-Klasse zum Deserialisieren dieses Objekts veranschaulicht.
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);
}
}
#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 );
}
import System.*;
import System.IO.*;
import System.Xml.Serialization.*;
import System.Xml.Schema.* ;
import System.Xml.XmlWriter;
import System.Xml.XmlReader;
public class Reader
{
public static void main(String[] args)
{
XmlSerializer serializer = new XmlSerializer(Person.class.ToType());
FileStream file = new FileStream("test.xml", FileMode.Open);
Person aPerson = (Person)(serializer.Deserialize(file));
Console.WriteLine(aPerson);
} //main
} //Reader
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
IXmlSerializable-Schnittstelle
IXmlSerializable-Member
System.Xml.Serialization-Namespace