次の方法で共有


IXmlSerializable.ReadXml(XmlReader) メソッド

定義

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)

パラメーター

reader
XmlReader

オブジェクトの逆シリアル化元である XmlReader ストリーム。

次の例は、 メソッドの実装を ReadXml 示しています。

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

次の例は、 クラスを使用 XmlSerializer してこのオブジェクトを逆シリアル化する方法を示しています。

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

注釈

メソッドは ReadXml 、 メソッドによって書き込まれた情報を使用してオブジェクトを再構成する WriteXml 必要があります。

このメソッドが呼び出されると、リーダーは型の情報をラップする開始タグに配置されます。 つまり、シリアル化されたオブジェクトの先頭を示す開始タグに直接置かれます。 このメソッドが戻るときには、すべての内容を含め、要素全体を最初から最後まで読み取る必要があります。 WriteXmlメソッドとは異なり、フレームワークはラッパー要素を自動的に処理しません。 実装では、これを行う必要があります。 これらの配置規則を守らないと、コードで予期しないランタイム例外または破損したデータが生成される可能性があります。

この方法を実装する場合は、アプリケーションの動作を無効にしたり変更したりするために、悪意のあるユーザーが正しい形式で無効な XML 表現を提供する可能性を考慮する必要があります。

適用対象