IXmlSerializable.ReadXml(XmlReader) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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.