Como serializar um objeto para XML usando o Visual C++ .NET ou Visual C++ 2005

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 815812
Para obter uma Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 815813.
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 315703.

NESTA TAREFA

Sumário
Este artigo passo a passo descreve como serializar um objeto para XML usando o Visual C++ .NET ou Visual C++ 2005. Você pode usar esse método para manter o estado de um objeto. Você também pode usar esse método para clonar um objeto por desserializar o XML de volta para o novo objeto.

back to the top

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • Geral familiaridade com XML
  • Geral familiaridade com o Visual C++ .NET ou Visual C++ 2005
back to the top

Serialização de XML

Serialização é o processo de converter um objeto em um formulário que pode ser facilmente transportado. O Microsoft .NET Framework inclui objetos poderosos que podem serializar qualquer objeto para XML. Você pode fazer isso com System::Xml::Serialization espaço para nome.

Crie um aplicativo de console que cria um objeto e, em seguida, serializa o estado de um objeto para XML. Para fazer isso, execute as seguintes etapas:
  1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
  2. No menu arquivo , clique em novo e, em seguida, clique em Project .
  3. No Visual Studio .NET 2002, clique em Projetos do Visual c++ em Tipos de projeto e, em seguida, clique em Aplicativo de C++ gerenciado em modelos .

    No Visual Studio .NET 2003, clique em Projetos do Visual c++ em Tipos de projeto e, em seguida, clique em Aplicativo de console (NET) em modelos .

    No Visual Studio 2005, clique em Visual C++ em Tipos de projeto e, em seguida, clique em Aplicativo de console CLR em modelos .
  4. Na caixa de texto nome , digite 815812 .
  5. Alterne para Class View. Para fazer isso, clique em Class View no menu Exibir .
  6. Clique com o botão direito do mouse 815812 , aponte para Add e, em seguida, clique em Add Class .
  7. Na caixa de diálogo Add Class , clique em Classe do C++ genérico em modelos e, em seguida, clique em Abrir .

    Observação No Visual Studio 2005, clique em Classe do C++ em modelos e em seguida, clique em Adicionar .
  8. No Assistente de classe C++ genérico, digite pessoa na caixa de texto nome da classe e em seguida, clique em Concluir . A classe Person aparece da seguinte maneira:
    #pragma onceclass Person{public:	Person(void);	~Person(void);};
    Observação você deve adicionar o common language runtime oferecem suporte a compilador opção (/ CLR: oldSyntax) no Visual C++ 2005 a compilar com êxito o exemplo de código anterior. Para adicionar a opção de compilador de suporte de tempo de execução idioma comum no Visual C++ 2005, siga estas etapas:
    1. Clique em Project e clique em <ProjectName> propriedades .

      Observação <ProjectName> é um espaço reservado para o nome do projeto.
    2. Expanda Configuration Properties e, em seguida, clique em Geral .
    3. Clique para selecionar Common Language Runtime suporte, sintaxe antiga (/ CLR: oldSyntax) no projeto oferece suporte a Common Language Runtime configuração no painel à direita, clique em Aplicar e em seguida, clique em OK .
    Para obter mais informações sobre o common language runtime oferece suporte à opção do compilador, visite o seguinte site da Microsoft:
    / clr (Common Language Runtime Compilation)
    http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
    Para tornar a classe Person um público gerenciado classe C++, adicionar a palavra-chave de pública __gc antes da classe Person :
    #pragma once__gc public class Person{public:    Person(void);    ~Person(void);};
  9. Abra o arquivo Person.h .
  10. Use a diretiva usando o namespace System de modo que não é necessário que qualificar declarações desses namespaces posteriormente no seu código. Cole o seguinte código no Person.h arquivo:
    using namespace System; // This shortcut avoids you having to type System::String
  11. Adicione as seguintes variáveis membro públicas três à classe Person :
        String* firstName;    String* middleNI;    String* lastName;
  12. Alternar para a janela de código para o arquivo 815812.CPP .
  13. Use System.dll e System.XML.dll da seguinte maneira:
    #include "Person.h"#using <System.Dll>#using <System.XML.Dll>
  14. Usar a diretiva usando os namespaces System::XML e System::Xml::Serialization de modo que não é necessário que qualificar declarações desses namespaces posteriormente no seu código:
    using namespace System;using namespace System::Xml;using namespace System::Xml::Serialization;
  15. Na função void Main , declarar e criar uma instância da classe Person :
    Person* p = new Person();
  16. Defina as propriedades do objeto Person : p
        p->firstName = S"Jeff";    p->middleNI  = S"A";    p->lastName  = S"Price";
  17. O namespace Xml::Serialization contém uma classe XmlSerializer que serializa um objeto para XML. Quando você cria uma instância para a classe XmlSerializer , você passe o tipo da classe que deseja serializar a seu construtor:
        XmlSerializer* x = new XmlSerializer(p->GetType());
  18. Use o método Serialize para serializar um objeto para XML. Serialize está sobrecarregado e pode enviar a saída para um TextWriter , um fluxo ou um objeto XMLWriter . Você pode usar o código a seguir para enviar a saída para o console:
        x->Serialize(Console::Out,p);    Console::WriteLine();    Console::ReadLine();
back to the top

Concluir a listagem de código

815812.cpp

// This is the main project file for the Visual C++ application project // that is generated by using an Application Wizard.#include <stdafx.h>#using <mscorlib.dll>#include "Person.h"#using <System.Dll>#using <System.XML.Dll>using namespace System;using namespace System::Xml;using namespace System::Xml::Serialization;int _tmain(){    Person* p = new Person();    p->firstName = S"Jeff";    p->middleNI = S"A";    p->lastName = S"Price";    XmlSerializer* x = new XmlSerializer(p->GetType());    x->Serialize(Console::Out,p);    Console::WriteLine();    Console::ReadLine();    	   return 0;}

Person.h

#pragma onceusing namespace System;__gc public class Person{public:    Person(void);    ~Person(void);    String* firstName;    String* middleNI;    String* lastName;};
back to the top

Verificar se ele funciona

Para verificar se seu projeto funciona, pressione a combinação de teclas CTRL + F5 para executar o projeto. Um objeto Person é criado e preenchido com valores que você digitou. Esse estado é serializado para XML. A janela console exibirá o seguinte:
<?xml version="1.0" encoding="IBM437"?><Person xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  <firstName>Jeff</firstName>  <middleNI>A</middleNI>  <lastName>Price</lastName></Person>
back to the top

Solução de problemas

O objeto Xml::Serialization::XmlSerializer realiza apenas superficial serialização. Se você deseja serializar as variáveis particulares de um objeto ou filho objetos, você deve usar serialização profunda.

back to the top
Referências
Para obter mais informações sobre XML Serialization, visite o seguinte site da Microsoft Developer Network (MSDN): back to the top

Propriedades

ID do Artigo: 815812 - Última Revisão: 11/14/2007 06:26:28 - Revisão: 2.2

Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition

  • kbmt kbnamespace kbxml kbhowtomaster KB815812 KbMtpt
Comentários