ID do artigo: 316730 - Última revisão: sexta-feira, 18 de maio de 2007 - Revisão: 2.4

COMO: Serializar e desserializar o XML no Visual Basic .NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Este artigo demonstra como usar a classe System.XmlSerialization.XmlSerializer para serializar e desserializar um objeto para XML (Extensible Markup Language).

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Visual Studio .NET
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • Microsoft Visual Basic .NET
  • XML

Descrição da serialização de XML

Serialização é o processo pelo qual você armazenar o estado de um objeto em um fluxo de dados. Serialização permite que você persistir o estado de um objeto para que você possa recuperar o estado posterior. Serialização também permite que você clonar um objeto existente para criar um novo objeto. O namespace System.XML.Serialization contém classes que você pode usar para serializar objetos em XML.

Criar o aplicativo de console no Visual Basic .NET

Nesta seção, você cria um aplicativo de console que:
  • Desserializa um objeto para XML.
  • Salva a serialização de XML em um arquivo de texto.
  • Lê o XML no arquivo de texto para criar um novo objeto (desserialização).
  1. Siga estas etapas para criar um novo aplicativo console no Visual Basic. NET:
    1. Inicie o Visual Studio NET..
    2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
    3. Na caixa de diálogo New Project , clique em Projetos do Visual Basic em Tipos de projeto e, em seguida, clique em Aplicativo de console em modelos .
  2. Siga estas etapas para adicionar uma nova classe para o projeto:
    1. No menu Project , clique em Add Class .
    2. Na caixa de diálogo Add New Item , digite clsProduct.vb na caixa de texto nome e em seguida, clique em Abrir .
  3. Substitua o código na janela de código clsProduct.vb com o código a seguir:
    Public Class clsProduct
    
      Private mstrName As String
      Private mstrDescription As String
      Private mintQty As Integer
    
      Public Property Name() As String
        Get
          Name = mstrName
        End Get
        Set(ByVal Value As String)
          mstrName = Value
        End Set
      End Property
    
      Public Property Description() As String
        Get
          Description = mstrDescription
        End Get
        Set(ByVal Value As String)
          mstrDescription = Value
        End Set
      End Property
    
      Public Property Qty() As Integer
        Get
          Qty = mintQty
        End Get
        Set(ByVal Value As Integer)
          mintQty = Value
        End Set
      End Property
    
    End Class
    						
    este código cria uma classe Product com três propriedades: nome , Descrição e Qtd (quantidade).
  4. Alterne para a janela de código para Module1.vb e, em seguida, adicione o código a seguir na parte superior da janela de código:
    Imports System.IO
    Imports System.Xml.Serialization
    					
  5. No procedimento Sub Main , adicione o código a seguir para criar e preencher uma instância da classe clsProduct :
        'Set up product object.
        Dim p As New clsProduct()
        p.Name = "Widget"
        p.Description = "Faster, better, cheaper"
        p.Qty = 5
    					
  6. Use o objeto XmlSerializer para serializar o objeto para XML e salvar o estado do objeto para um arquivo de texto. Para fazer isso, adicione o seguinte código imediatamente antes da instrução End Sub no procedimento Sub Main :
        'Serialize object to a text file.
        Dim objStreamWriter As New StreamWriter("C:\Product.xml")
        Dim x As New XmlSerializer(p.GetType)
        x.Serialize(objStreamWriter, p)
        objStreamWriter.Close()
    					
  7. No menu Debug , clique em Iniciar para executar o aplicativo.
  8. Abra o arquivo Product.xml no bloco de notas ou no Microsoft Internet Explorer. O conteúdo desse arquivo deve ser exibidas da seguinte maneira:
    <?xml version="1.0" encoding="utf-8"?>
    <clsProduct xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Name>Widget</Name>
      <Description>Faster, better, cheaper</Description>
      <Qty>5</Qty>
    </clsProduct>
    						
  9. O namespace Xml.Serialization lhe permite personalizar a saída que gera a classe XmlSerializer . Por exemplo, na classe clsProduct , o campo de quantidade é abreviado como Qtd. Você pode usar o atributo de XmlElementAttribute para alterar o campo para quantidade ao serializar a classe.

    Alterne para a janela de código para clsProduct.vb e, em seguida, adicione o código a seguir na parte superior da janela de código:
    Imports System.Xml.Serialization
    					
  10. Localize o procedimento de propriedade de Qtd e, em seguida, insira o código a seguir imediatamente antes da instrução Public propriedade Qty() As Integer :
    <XmlElementAttribute(ElementName:="Quantity")> _
    					
  11. No menu Debug , clique em Iniciar para executar o aplicativo.
  12. Abra o arquivo Product.xml no bloco de notas ou no Internet Explorer. O conteúdo desse arquivo deve aparece da seguinte maneira:
    <?xml version="1.0" encoding="utf-8"?>
    <clsProduct xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Name>Widget</Name>
      <Description>Faster, better, cheaper</Description>
      <Quantity>5</Quantity>
    </clsProduct>
    							
    Observe que o elemento Qtd alterado para quantidade .
  13. Alterne para a janela de código para Module1.vb e, em seguida, adicione o seguinte código ao procedimento Sub Main imediatamente antes da instrução End Sub :
        'Deserialize text file to a new object.
        Dim objStreamReader As New StreamReader("C:\Product.xml")
        Dim p2 As New clsProduct()
        p2 = x.Deserialize(objStreamReader)
        objStreamReader.Close()
    
        'Display property values of the new product object.
        Console.WriteLine(p2.Name)
        Console.WriteLine(p2.Description)
        Console.WriteLine(CStr(p2.Qty))
        Console.ReadLine()
    						
    este código desserializa o arquivo de texto Product.xml para criar um novo objeto clsProduct chamado p2. Além disso, esse código exibe os valores de propriedade de p2 na janela do console.

Verificar se ele funciona

No menu Debug , clique em Iniciar para executar o aplicativo. Observe que os valores de propriedade de p2 são exibidos na janela do console:
Widget
Faster, better, cheaper
5
					

Concluir a listagem de código

'Module1.vb
Imports System.Xml.Serialization
Imports System.IO

Module Module1

  Sub Main()
    
    'Set up product object.
    Dim p As New clsProduct()
    p.Name = "Widget"
    p.Description = "Faster, better, cheaper"
    p.Qty = 5

    'Serialize object to a text file.
    Dim objStreamWriter As New StreamWriter("C:\Product.xml")
    Dim x As New XmlSerializer(p.GetType)
    x.Serialize(objStreamWriter, p)
    objStreamWriter.Close()

    'Deserialize text file to a new object.
    Dim objStreamReader As New StreamReader("C:\Product.xml")
    Dim p2 As New clsProduct()
    p2 = x.Deserialize(objStreamReader)
    objStreamReader.Close()

    'Display property values of the new product object.
    Console.WriteLine(p2.Name)
    Console.WriteLine(p2.Description)
    Console.WriteLine(CStr(p2.Qty))
    Console.ReadLine()

  End Sub

End Module

'clsProduct.vb
Imports System.Xml.Serialization

Public Class clsProduct

  Private mstrName As String
  Private mstrDescription As String
  Private mintQty As Integer

  Public Property Name() As String
    Get
      Name = mstrName
    End Get
    Set(ByVal Value As String)
      mstrName = Value
    End Set
  End Property

  Public Property Description() As String
    Get
      Description = mstrDescription
    End Get
    Set(ByVal Value As String)
      mstrDescription = Value
    End Set
  End Property

  <XmlElementAttribute(ElementName:="Quantity")> _
  Public Property Qty() As Integer
    Get
      Qty = mintQty
    End Get
    Set(ByVal Value As Integer)
      mintQty = Value
    End Set
  End Property

End Class
				

Referências

Para obter mais informações, consulte os seguintes sites da Microsoft:
Exemplos de serialização de XML
http://msdn.microsoft.com/en-us/library/aa719523.aspx (http://msdn.microsoft.com/en-us/library/aa719523.aspx)

Membros de XmlSerializer
http://msdn2.microsoft.com/en-us/library/system.xml.serialization.xmlserializer_members(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/system.xml.serialization.xmlserializer_members(vs.71).aspx)

Namespace System.XML.Serialization
http://msdn.microsoft.com/en-us/library/system.xml.serialization.aspx (http://msdn.microsoft.com/en-us/library/system.xml.serialization.aspx)

Recursos XML no ADO.NET
http://msdn.microsoft.com/en-us/library/ms810298.aspx (http://msdn.microsoft.com/en-us/library/ms810298.aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Palavras-chave: 
kbmt kbhowtomaster KB316730 KbMtpt
Tradução automáticaTradução automática
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: 316730  (http://support.microsoft.com/kb/316730/en-us/ )