Compartilhar via


IXmlSerializable.ReadXml(XmlReader) Método

Definição

Gera um objeto com base em sua representação 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)

Parâmetros

reader
XmlReader

O fluxo do XmlReader do qual o objeto é desserializado.

Exemplos

O exemplo a seguir ilustra uma implementação do ReadXml método.

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

O exemplo a seguir ilustra o uso da XmlSerializer classe para desserializar esse objeto.

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

Comentários

O ReadXml método deve reconstituir seu objeto usando as informações que foram escritas pelo WriteXml método.

Quando esse método é chamado, o leitor é posicionado na marca inicial que encapsula as informações do seu tipo. Ou seja, diretamente na marca inicial que indica o início de um objeto serializado. Quando esse método retorna, ele deve ter lido todo o elemento do início ao fim, incluindo todo o seu conteúdo. Ao contrário do WriteXml método, a estrutura não manipula o elemento wrapper automaticamente. Sua implementação deve fazer isso. Não observar essas regras de posicionamento pode fazer com que o código gere exceções de runtime inesperadas ou dados corrompidos.

Ao implementar esse método, você deve considerar a possibilidade de que um usuário mal-intencionado possa fornecer uma representação XML bem formada, mas inválida, a fim de desabilitar ou alterar o comportamento do seu aplicativo.

Aplica-se a