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 II (Embedded Expressions)

As Embedded Expressions não são mais do que expressões que podemos utilizar embebidas nos código, colocando a expressão entre as tags <%= expressão %>, que é o mesmo sintaxe que é utilizado em ASP.NET.

Desta forma, é muito simples com base numa lista, DataTable, DataSet, etc., criar um ficheiro XML com a estrutura pretendida.

Um exemplo simples, utilizando um Func Delegate (Lambda Expressions) que soma dois valores:

' Define a Lambda Expression
Dim f As Func(Of Integer, Integer, Integer) = Function(x, y) x + y

Dim exemplo = _
    <teste>
        <
valor><%= f(125, 125).ToString() %></valor>
    </
teste>

O resultado será:

<teste>
  <
valor>250</valor>
</
teste>

Mas podemos incluir o cabeçalho de um ficheiro XML, e usando o LINQ, preencher o ficheiro de uma forma bastante simples com base numa lista, neste exemplo, List(Of T)

   ' Cria uma lista com alguns livros 
  
Dim bookList As New List(Of String
   bookList.AddRange(New String() {"Crepúsculo", "Equador", "O Sétimo Selo"}) 

   ' Gera o XML e grava para o disco. 
  
Dim newBookList1 = _ 
       <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
       <
library
           <
books
              
<%= From b In bookList Select <book><%= b %></book> %> 
           </books
       </
library

  
newBookList1.Save("c:\result.xml")

Neste exemplo, o resultado será:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <
library>
      <
books>
           <
book>Crepúsculo</book>
           <
book>Equador</book>
           <
book>O Sétimo Selo</book>
     </
books>
</
library>

Usando o método DataTable.WriteXml() ou Datset.WriteXml() é muito simples gravar o conteúdo de uma base de dados ou de uma tabela para um ficheiro XML. No entanto, não permite criar com o formato especifico ou usar apenas alguns campos.

Desta forma, e usando Embedded Expressions, podemos formatar o resultado final, como se pode ver no seguinte exemplo:

      ' Neste exemplo tudo é criado manualmente, mas os dados poderiam 
      ' ser preenchidos de uma tabela SQL ou outra base de dados qualquer 
   
Dim dt As New DataTable("Livros"
    dt.Columns.Add("Livro", GetType(String)) 
    dt.Columns.Add("Autor", GetType(String)) 

    dt.Rows.Add("Crepúsculo", "Stephenie Meyer"
    dt.Rows.Add("Equador", "Miguel S. Tavares"
    dt.Rows.Add("O Sétimo Selo", "José R. dos Santos"

     Dim ds As New DataSet 
     ds.Tables.Add(dt) 


     ' Gera o XML, definindo 2 atributos: "name" e "author" 
     
Dim newBookList2 = _ 
         <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
         <!--
Isto é apenas um comentário –
          <
library
              <
books
                 
<%= From b In ds.Tables("Livros") Select
                               <book name=<%= b.Item("Livro") %> 
                                              author=<%= b.Item("Autor") %>/> %>    
              </books
         </
library

    
' Grava para o disco 
   
newBookList2.Save("c:\result.xml")

Finalmente o resultado: 

<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 
<
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>
</
library>

Como podem ver, usando Embedded Expressions e XML Literals, consegue-se fácilmente criar ficheiros XML e com a estrutura do ficheiro definida no código.

Espero que ajude!

0 comentários:



Microsoft Office Especialist

Membro da Comunidade
Experts-Exchange


Administ. da Comunidade
Portugal-a-Programar



Twitter

Artigos no CodeProject

Artigos no CodeProject
Google-Translate-ChineseGoogle-Translate-Portuguese to FrenchGoogle-Translate-Portuguese to GermanGoogle-Translate-Portuguese to ItalianGoogle-Translate-Portuguese to JapaneseGoogle-Translate-Portuguese to EnglishGoogle-Translate-Portuguese to RussianGoogle-Translate-Portuguese to Spanish

Subscrever Novidades

Endereço de Email:

Delivered by FeedBurner

Seguidores

Histórico