Поделиться через


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 .

При вызове этого метода средство чтения размещается на начальном теге, который заключает в оболочку сведения для вашего типа. То есть непосредственно в теге start, который указывает начало сериализованного объекта. При возврате этого метода он должен прочитать весь элемент от начала до конца, включая все его содержимое. WriteXml В отличие от метода , платформа не обрабатывает элемент-оболочку автоматически. Это необходимо сделать в вашей реализации. Несоблюдение этих правил позиционирования может привести к тому, что код создаст непредвиденные исключения среды выполнения или повреждает данные.

При реализации этого метода следует учитывать возможность того, что злоумышленник может предоставить правильно сформированное, но недопустимое XML-представление, чтобы отключить или иным образом изменить поведение приложения.

Применяется к