Artigo: 316730 - Última revisão: sexta-feira, 18 de Maio de 2007 - Revisão: 2.4

COMO: Serializar e anular a serialização de 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 | Reduzir tudo

Sumário

Este artigo demonstra como utilizar a classe System.XmlSerialization.XmlSerializer para serializar e para anular a serialização de um objecto para XML (Extensible Markup Language).

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que necessita:
  • Microsoft Visual Studio .NET
Este artigo pressupõe que está familiarizado com os seguintes tópicos:
  • Microsoft Visual Basic .NET
  • XML

Descrição da serialização de XML

Serialização é o processo pelo qual armazenar o estado de um objecto numa sequência de dados. Serialização permite-lhe manter o estado de um objecto para que é possível obter o estado mais tarde. Serialização permite também a clonar um objecto existente para criar um novo objecto. O espaço de nomes System.Xml.Serialization contém classes que pode utilizar para serializar objectos em XML.

Criar a aplicação da consola no Visual Basic .NET

Nesta secção, cria uma aplicação de consola que:
  • Deserializes um objecto para XML.
  • Guarda a serialização de XML num ficheiro de texto.
  • Lê o XML no ficheiro de texto para criar um novo objecto (anulação da serialização).
  1. Siga estes passos para criar uma nova aplicação de consola no Visual Basic. NET:
    1. Inicie o Visual Studio NET..
    2. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
    3. Na caixa de diálogo Novo projecto , clique em Projectos do Visual Basic em Project Types e, em seguida, clique em Aplicação de consola em modelos .
  2. Siga estes passos para adicionar uma nova classe ao projecto:
    1. No menu projecto , clique em Adicionar classe .
    2. Na caixa de diálogo Adicionar novo item , escreva 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 seguinte código:
    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 de produtos com três propriedades: nome , Descrição e Qtd. (quantidade).
  4. Mude para a janela de código para Module1.vb e, em seguida, adicione o código seguinte à parte superior da janela de código:
    Imports System.IO
    Imports System.Xml.Serialization
    					
  5. No procedimento Sub Main , adicione o seguinte código 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. Utilize o objecto de XmlSerializer serializar o objecto para XML e guardar o estado do objecto para um ficheiro de texto. Para efectuar este procedimento, adicione o seguinte código imediatamente antes a instrução ' End Sub 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 a aplicação.
  8. Abra o ficheiro Product.xml no bloco de notas ou no Microsoft Internet Explorer. O conteúdo deste ficheiro deverá apresentado da seguinte forma:
    <?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 espaço de nomes Xml.Serialization permite-lhe personalizar o resultado que gera a classe de XmlSerializer . Por exemplo, classe clsProduct , o campo ' Quantidade ' é abreviado como Qtd. Pode utilizar o atributo XmlElementAttribute para alterar o campo a quantidade ao serializar a classe.

    Mude para a janela código clsProduct.vb e, em seguida, adicione o código seguinte à parte superior da janela de código:
    Imports System.Xml.Serialization
    					
  10. Localize o procedimento de propriedade para Qtd. e, em seguida, insira o seguinte código imediatamente antes a instrução Pública propriedades qty() As Integer :
    <XmlElementAttribute(ElementName:="Quantity")> _
    					
  11. No menu Debug , clique em Iniciar para executar a aplicação.
  12. Abra o ficheiro Product.xml no bloco de notas ou no Internet Explorer. O conteúdo deste ficheiro deve aparece da seguinte forma:
    <?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>
    							
    Repare que o elemento de Qtd. alterado a quantidade .
  13. Mude para a janela de código para Module1.vb e, em seguida, adicione o seguinte código ao procedimento Sub Main imediatamente antes a 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 deserializes o ficheiro de texto Product.xml para criar um novo objecto clsProduct denominado p2. Além disso, este código apresenta os valores de propriedade de p2 na janela de consola.

Verificar se funciona

No menu Debug , clique em Iniciar para executar a aplicação. Repare que os valores de propriedade de p2 aparecem na janela da consola:
Widget
Faster, better, cheaper
5
					

Concluir lista 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 mais informações, consulte os seguintes Web 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)

Espaço de nomes 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)

Funcionalidades 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )