共用方式為


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 標記法,以停用或改變應用程式的行為。

適用於