Visual Basic em Português

Página pessoal de Jorge Paulino sobre o Visual Basic (VB.NET, ASP.NET, VB6, VBA) e algumas noticias de tecnologia

VB.NET: XML Literals - Parte I

Antes de falar propriamente nos XML Literals, e porque nunca aqui foi referido e será utilizado neste exemplo, vou falar um pouco sobre a declaração Option Infer.

Option Infer

A declaração Option Infer On permite que não se indique o tipo de variável, sendo esta identificada efectuada automaticamente pelo compilador.

Isto é bastante útil para LINQ ou para Lambda Expressions e pode ser activado ou desactivado a nível do projecto (Tools - Options - Projects and Solutions - VB Defaults) ou a nível do documento, através da declaração "Option Infer On" ou "Option Infer Off". Por defeito está definido para "On".

Vejamos estas declarações:

Dim str = "Exemplo"
Dim int = 123
Dim dbl = 12.3
Dim list = New List(Of Integer)

Nestes exemplos, e caso esteja definido Option Infer On, as variáveis serão definidas como str = String, int = Integer, dbl = Double e list as System.Collections.Generics.List(of T).

É o mesmo que fazer:

Dim str As String = "Exemplo"
Dim int As Integer = 123
Dim dbl As Double = 12.3
Dim list As New List(Of Integer)

Caso estivesse definido como Option Infer Off, todas as variáveis ficariam definidas como Object, e não o tipo desejado.

XML Literals

Passando ao tema principal deste artigo, este pretende mostrar como os XML Literals permitem incorporar o XML directamente no código e com isso, conseguir manipular muito facilmente este tipo de ficheiros. Os XML Literals estão disponíveis a partir do Visual Studio 2008, suportando a maioria da especificação Extensible Markup Language (XML) 1.0.

Este exemplo cria, em modo runtime, a estrutura de um ficheiro XML, com alguns dados, estando disponível intellissence e auto-indenting do texto:

Dim bookList = _
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <!--
Lista de livros e revistas -->
    <
library>
        <
books>
            <
book name="Crepúsculo" author="Stephenie Meyer"/>
            <
book name="Equador" author="Miguel S. Tavares"/>
            <
book name="O Sétimo Selo" author="José R. dos Santos"/>
        </
books>
        <
magazine>
            <
magazineName>"MSDN Magazine"</magazineName>
            <
magazineName>"Code Magazine"</magazineName>
        </
magazine>
    </
library>

 
Com base no ficheiro criado, e para listar todas as revistas, indicando o caminho da estrutura XML até ao elemento pretendido, podemos criar um ciclo For Each:

For Each m In From element In _
                                        bookList.<library>.<magazine>.<magazineName>
  
Debug.WriteLine(m.Value)
Next

Este é um método mais prático de o fazer, sem ser necessário indicar o caminho para o elemento pretendido, utilizando a propriedade Descendants, que irá retornar todos os elementos descendentes que encontre na descrição especificada entre as chavetas <>:

For Each m In From element In bookList...<magazineName>
   
Debug.WriteLine(m.Value)
Next


Para listar os livros, o processo é semelhante, mas desta vez como o Nome e o Autor estão como atributos, utiliza-se o caracter "@" para indicar qual o atributo a ler:

For Each book In From element In bookList...<book>
   
Debug.WriteLine("Livro: " & book.@name.ToString)
    Debug.WriteLine("Autor: " & book.@author.ToString)

    ' Linha de separação
   
Debug.WriteLine(New String("-"c, 40))
Next

 
Para um pesquisa de informação podemos utilizar LINQ to XML. Neste caso, para procurar todos os registo que com a palavra "Selo":

Dim bookSearch = From b In bookList...<book>_
                 Where b.@name.ToString.Contains("Selo") _
                 Select b.@name, b.@author

For Each book In From element In bookSearch
    Debug.WriteLine("Livro: "& book.name)
    Debug.WriteLine("Autor: " & book.author)

    ' Linha de separação
   
Debug.WriteLine(New String("-"c, 40))
Next

 
Finalmente, podemos gravar para o disco, o XML que se encontra em memória

bookList.Save("d:\LivrosRevistas.xml")

 
É um exemplo simples de como ler informação utilizando XML Literals e LINQ to XML, que mostra que nunca foi tão fácil trabalhar com ficheiro XML.

Para breve mais exemplos sobre XML Literals!

2 comentários:

me disse...

Muito legal mesmo!!

Laercio Tersi disse...

Marcos Gostei muito do exemplo, so to com um problemão ali você declarou o xml como uma variavel que é a booklist, como faço para colocar esses dados em um arquivo no meu computador

Mensagens Recentes



Microsoft Office Especialist

Membro da Comunidade
Experts-Exchange


Administ. da Comunidade
Portugal-a-Programar



Twitter

Artigos no CodeProject

Artigos no CodeProject

Subscrever Novidades

Endereço de Email:

Delivered by FeedBurner

Seguidores

Histórico