IXmlSerializable.ReadXml(XmlReader) Metoda

Definicja

Generuje obiekt z reprezentacji XML.Generates an object from its XML representation.

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)

Parametry

reader
XmlReader

Strumień XmlReader, z którego deserializowany jest obiekt.The XmlReader stream from which the object is deserialized.

Przykłady

Poniższy przykład ilustruje implementację metody ReadXml.The following example illustrates an implementation of the ReadXml method.

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

Poniższy przykład ilustruje użycie klasy XmlSerializer do deserializacji tego obiektu.The following example illustrates the use of the XmlSerializer class to deserialize this object.

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

}

Uwagi

Metoda ReadXml musi odtworzyć obiekt przy użyciu informacji, które zostały zapisaną przez metodę WriteXml.The ReadXml method must reconstitute your object using the information that was written by the WriteXml method.

Gdy ta metoda jest wywoływana, czytnik jest umieszczany na tagu początkowym, który otacza informacje dla danego typu.When this method is called, the reader is positioned on the start tag that wraps the information for your type. Oznacza to, że bezpośrednio w tagu początkowym, który wskazuje początek serializowanego obiektu.That is, directly on the start tag that indicates the beginning of a serialized object. Gdy ta metoda zwraca, musi mieć odczytany cały element od początku do końca, łącznie z całą jego zawartością.When this method returns, it must have read the entire element from beginning to end, including all of its contents. W przeciwieństwie do metody WriteXml, struktura nie obsługuje elementu otoki automatycznie.Unlike the WriteXml method, the framework does not handle the wrapper element automatically. Twoja implementacja musi to zrobić.Your implementation must do so. Nieprzestrzeganie tych reguł pozycjonowania może spowodować, że kod generuje nieoczekiwane wyjątki środowiska uruchomieniowego lub uszkodzone dane.Failing to observe these positioning rules may cause code to generate unexpected runtime exceptions or corrupt data.

Podczas implementowania tej metody należy wziąć pod uwagę możliwość, że złośliwy użytkownik może zapewnić poprawnie sformułowaną, ale nieprawidłową reprezentację XML w celu wyłączenia lub zmiany zachowania aplikacji.When implementing this method, you should consider the possibility that a malicious user might provide a well-formed but invalid XML representation in order to disable or otherwise alter the behavior of your application.

Dotyczy