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 III (Ler dados)

Um dos benefícios do uso de XML Literals é a facilidade de ler informação e com isso melhorar o código e reduzir o tempo de desenvolvimento. Existem algumas formas de ler informação, como por exemplo LINQ ou Lambda Expressions, e como num artigo anterior já foi referido alguma coisa sobre LINQ, neste artigo será apenas utilizado Lambda.

Estes métodos de pesquisa serão a base para modificar dados, apagar ou inserir novos elementos, mas isto, será mostrado brevemente.

Ficheiro: “myFile.xml”

<?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>

A leitura de um ficheiro, começa sempre pela sua leitura para uma variável, e para isso utilizamos um XDocument. Depois, mediante o tipo de informação que queremos pesquisar/ler, utilizam-se diferentes métodos.

Nota: O nome do ficheiro está guardado na variável strFileName

Dim strFileName As String = "d:\myFile.xml"


Uma leitura simples de um elemento, por exemplo “magazineName”, será feito da seguinte forma:

Dim xmlFile = XDocument.Load(strFileName)
Debug.WriteLine(xmlFile...<magazineName>.Value)

Tão simples com isto! Este método utiliza a propriedade descendants, que irá procurar todos os elementos que tenham a tag indicada.

O resultado, na Immediate Window será “MSDN Magazine”, ou seja, o primeiro elemento que encontrar. Mas podemos também procurar por um valor nos elementos com a mesma tag, neste caso 2, utilizando, por exemplo, Lambda.

Dim xmlFile = XDocument.Load(strFileName)
Debug.WriteLine(xmlFile...<magazineName>.Where(Function(f) _  
                                                          f.Value = "Code Magazine").Value)

Para mostrar um atributo da categoria <Books> o método é semelhante. Desta vez, como se trata de um atributo, é usado a “@”, seguido do nome do atributo.

Dim xmlFile = XDocument.Load(strFileName)
Debug.WriteLine(xmlFile...<book>.@author)

Mas isto irá mostrar apenas o primeiro autor, do primeiro elemento. E se quisermos o nome do autor do livro “Equador” ? Podemos utilizar uma vez mais Lambda.

Dim xmlFile = XDocument.Load(strFileName)
Debug.WriteLine(xmlFile...<book>.Where(Function(f) _ 
                                                                 f.@name = "Equador").@author)

Desta forma, pesquisamos o elemento cujo atributo name é igual a “Equador”, e mostramos o nome do author.


Estes são mais alguns exemplos que mostram como é simples ler informação de um ficheiro XML, usando XML Literals.

2 comentários:

Anónimo disse...

Consigo ler TAGS do XML da NFe com esse código, porque estava tentando ele passa pela linha, mas não me trás o valor. Obrigada!

Jorge Paulino disse...

Pode mostrar um exemplo?

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