IXmlSerializable.ReadXml(XmlReader) メソッド


オブジェクトの XML 表現からオブジェクトを生成します。Generates an object from its XML representation.

 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)



オブジェクトの逆シリアル化元である XmlReader ストリーム。The XmlReader stream from which the object is deserialized.

次の例は、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();

次の例は、このオブジェクトを逆シリアル化するために XmlSerializer クラスを使用する方法を示しています。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);


ReadXml メソッドは、WriteXml メソッドによって書き込まれた情報を使用して、オブジェクトを再構築する必要があります。The ReadXml method must reconstitute your object using the information that was written by the WriteXml method.

このメソッドが呼び出されると、リーダーは、型の情報をラップする開始タグに配置されます。When this method is called, the reader is positioned on the start tag that wraps the information for your type. つまり、シリアル化されたオブジェクトの先頭を示す開始タグに直接あります。That is, directly on the start tag that indicates the beginning of a serialized object. このメソッドから制御が戻るときに、すべての内容を含む要素全体を先頭から末尾まで読み取る必要があります。When this method returns, it must have read the entire element from beginning to end, including all of its contents. WriteXml メソッドとは異なり、フレームワークはラッパー要素を自動的に処理しません。Unlike the WriteXml method, the framework does not handle the wrapper element automatically. 実装では、これを行う必要があります。Your implementation must do so. これらの配置ルールを確認しないと、コードが予期しないランタイム例外を生成したり、データが破損したりする可能性があります。Failing to observe these positioning rules may cause code to generate unexpected runtime exceptions or corrupt data.

このメソッドを実装する場合は、悪意のあるユーザーが、アプリケーションの動作を無効にしたり、変更したりするために、適切な形式ではなく、正しくない XML 表現を提供する可能性を考慮する必要があります。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.