VB 
.NET 
-  Acessando e lendo XML e exibindo em um ListView
    
    
    ![]()  | 
    Hoje veremos como acessar um arquivo XML e exibir os dados em um controle ListView usando VB .NET. | 
				
				![]()  | 
  
Já faz um bom tempo que eu publiquei um artigo mostrando como usar o ListView no VB .NET. Configura aqui: VB.NET - Usando o controle ListView
Para tratar com XML eu também já publiquei muitos artigos que você pode conferir nas referências. Vou deixar um link aqui : VB .NET - Visualizador de Arquivos XML - Macoratti.net
Então neste artigo eu vou apenas acessar um arquivo XML e exibir o seu conteúdo no ListView.
Vou acessar um arquivo XML chamado Alunos.xml que vai estar na pasta bin\Debug do projeto e que tem a seguinte estrutura :
		<?xml version="1.0" encoding="utf-8" ?> 
<Alunos>
  <Aluno Id="10">
    <Nome>Jose Carlos</Nome>
    <Sobrenome>Macoratti</Sobrenome>
    <Email>macoratti@yahoo.com</Email>
  </Aluno>
  <Aluno Id="20">
    <Nome>Beatriz</Nome>
    <Sobrenome>Siqueira</Sobrenome>
    <Email>bibi@hotmail.com</Email>
  </Aluno>
  <Aluno Id="30">
    <Nome>Mario</Nome>
    <Sobrenome>Silveira</Sobrenome>
    <Email>mariosilv@gmail.com</Email>
  </Aluno>
  <Aluno Id="40">
    <Nome>Debora</Nome>
    <Sobrenome>Menezes</Sobrenome>
    <Email>deboramen@uol.com.br</Email>
  </Aluno>
  <Aluno Id="50">
    <Nome>Janice</Nome>
    <Sobrenome>Santos</Sobrenome>
    <Email>janjan@yahoo.com.br</Email>
  </Aluno>
</Alunos>
		 | 
	
Recursos Usados neste artigo :
Criando o projeto Windows Forms
Abra o Visual Studio 2017 Community e crie um projeto Windows Forms com o nome Vbn_XMListView :

No formulário Form1.vb inclua os seguintes controles a partir da ToolBox:
E disponha os controles conforme o leiaute abaixo:

Agora no evento Click do botão de comando inclua o código abaixo:
		 Private Sub btnCarregarXML_Click(sender As Object, e As EventArgs) Handles btnCarregarXML.Click
        CarregarArquivoXML()
 End Sub
		 | 
	
A seguir temos o código da rotina CarregarArquivoXML():
		
    Private Sub CarregarArquivoXML()
		        Dim pastaAplicacao = System.IO.Path.GetDirectoryName(
            System.Reflection.Assembly.GetExecutingAssembly().Location)
		        Dim caminhoArquivo = System.IO.Path.Combine(pastaAplicacao, "alunos.xml")
		        ' carrega o arquivo XML
        Dim documentoXML As New XmlDocument
        documentoXML.Load(caminhoArquivo)
        Dim node_raiz As XmlElement = documentoXML.DocumentElement
		        ' Usa o primeiro No para fazer o cabeçalho
        Dim primeiro_node As XmlNode = node_raiz.FirstChild
        Dim texto As String = GetAtributosNomes(primeiro_node)
        Dim valores() As String = texto.Split("|"c)
		        For Each str As String In valores
            Dim coluna_header As New ColumnHeader
            coluna_header.Text = str
            coluna_header.Width = 100
            lvDados.Columns.Add(coluna_header)
        Next str
		        ' Le os valores do arquivo XML
        For Each primeiro_node In node_raiz.ChildNodes
            texto = GetAtributosValores(primeiro_node)
            valores = texto.Split("|"c)
            If valores.Length > 0 Then
                Dim lvw_item As ListViewItem = lvDados.Items.Add(valores(0))
                For i As Integer = 1 To valores.Length - 1
                    lvw_item.SubItems.Add(valores(i))
                Next i
            End If
        Next primeiro_node
		        ' tamanho das colunas a ajustar
        For Each hdr As ColumnHeader In lvDados.Columns
            hdr.Width = -2
        Next hdr
    End Sub
		 | 
	
Neste código lemos o arquivo XML alunos.xml e usamos o método GetAtributosNomes para ler os nomes dos atributos e o método GetAtributosValores para obter os valores dos atributos.
O código do método GetAtributosNomes e dado a seguir :
		Private Function GetAtributosNomes(ByVal xml_node As XmlNode) As String
        Dim resultado As String = ""
		        ' Obtem os nomes dos atributos dos elementos
        For Each attr As XmlAttribute In xml_node.Attributes
            resultado &= "|" & xml_node.Name & " " & attr.Name
        Next attr
		        ' Se o elemento possui um único texto filho adiciona o nome do elemento
        If (xml_node.ChildNodes.Count = 1) And (xml_node.FirstChild.NodeType = XmlNodeType.Text) Then
            resultado = resultado & "|" & xml_node.Name
        Else
            'Obtem os nomes da hierarquia e seus atributos
            For Each child As XmlNode In xml_node.ChildNodes
                If child.NodeType = XmlNodeType.Element Then
                    resultado = resultado & "|" &
                    GetAtributosNomes(child)
                End If
            Next child
        End If
		        If Len(resultado) > 0 Then resultado = resultado.Substring(1)
		        Return resultado
    End Function
		 | 
	
Agora temos o código do método GetAtributosValores() :
		Private Function GetAtributosValores(ByVal xml_node As XmlNode) As String
        Dim resultado As String = ""
		        ' Obtem os valores dos atributos dos elementos
        For Each attr As XmlAttribute In xml_node.Attributes
            resultado &= "|" & attr.Value
        Next attr
		        ' Se o elemento possui um único texto filho adiciona o nome do elemento
        If (xml_node.ChildNodes.Count = 1) And (xml_node.FirstChild.NodeType = XmlNodeType.Text) Then
            resultado = resultado & "|" &
            xml_node.FirstChild.InnerText
        Else
            'Obtem os nomes da hierarquia e seus atributos
            For Each child As XmlNode In xml_node.ChildNodes
                If child.NodeType = XmlNodeType.Element Then
                    resultado &= "|" &
                    GetAtributosValores(child)
                End If
            Next child
        End If
		        If Len(resultado) > 0 Then resultado = resultado.Substring(1)
        Return resultado
    End Function
		 | 
	
Executando o projeto iremos obter o seguinte resultado exibindo o conteúdo do arquivo XML no ListView:

Você pode incrementar o projeto incluindo opções para o usuário informar o nome e caminho do arquivo XML a ser lido.
Pegue o 
projeto completo aqui :  
Vbn_XMListView.zip
"Mas nós não recebemos 
o espírito do mundo, mas o Espírito que provém de Deus, para que pudéssemos 
conhecer o que nos é dado gratuitamente por Deus. "
1 
Coríntios 2:12
| 
    
    Veja os 
    Destaques e novidades do SUPER DVD Visual Basic 
(sempre atualizado) : clique e confira ! 
 Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?  | 
  
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a 
Objetos com VB .NET
![]()
ListView - Exibindo dados com busca dinâmica - Macoratti.net