Lendo XML com VB.NET

Nesta coluna estarei mostrando passo a passo como ler um arquivo XML via VB.NET.

Por | @oficinadanet Programação
Supondo que tenhamos um arquivo Xml com a estrutura abaixo:

Lendo XML com VB.NET

Para ler o arquivo Xml em questão usaremos o classe “XmlDocument” da framework 2.0 que estamos usando no momento. Vamos pegar somente o Nome, Especialidade e Crm do Médico em questão, faremos então o procedimento a baixo:

Private Sub LeXml()
        '*** Declara Variavel que lerá o documento XML
        Dim objXml As New XmlDocument
        '*** Declara Variavel indicara o caminho da XML no servidor web
        Dim CaminhoXml As String = "C:WebSitesLeituraDeXmlXmlMedicos.xml"
        '*** Adiciono no Metodo 'LoadXml' do objeto 'objXml' o caminho do arquivo no servidor
        objXml.Load(CaminhoXml)

        '*** Lê os Nohs específicos de dentro do Noh Pai 'Medicos' os Nohs Filhos
        Dim MedicoNome As String = objXml.SelectSingleNode("Medicos").ChildNodes(0).InnerText
        Dim MedicoEspec As String = objXml.SelectSingleNode("Medicos").ChildNodes(1).InnerText
        Dim MedicoCrm As String = objXml.SelectSingleNode("Medicos").ChildNodes(2).InnerText

        '*** Exibe Dados do Medico de maneira simples na Pagina
        Response.Write("> " & MedicoNome & "
")
        Response.Write("> " & MedicoEspec & "
")
        Response.Write("> " & MedicoCrm & "
")

    End Sub

O Resultado de nosso procedimento será como este logo abaixo:

Lendo XML com VB.NET

Explicando um pocuo como pegar os Nohs filhos de uma Tag especifica

Como no exemplo mostrado acima, quando eu executo a linha:

objXml.SelectSingleNode("Medicos").ChildNodes(0).InnerText

Estou falando para Selecionar a Tag 'Medicos' que é a Tag pai, atraves do método 'SelectSingleNode' que é do objeto 'objXml', onde eu posteriormete pego o primeiro Noh filho de Tag Pai ou seja a Tag chamada 'Nome', faço isso quando digito:

.ChildNodes(0).InnerText

Reparem que esta escrito 'ChildNodes(0)' isso se refere ao primeiro XPath ou seja o primeiro Noh da Tag Pai 'Medicos' visto que eu tenho mais de um Noh dentro dela. Fiz uma imagem de como seria o XPath da estrutura de caminhos para ler a XML em questão:

Lendo XML com VB.NET

Vendo os números poderemos ter uma ideia de como teremos que ler os outros Nohs que estão no arquivo Xml. Faremos então o precedimento completo, como mostrado a abaixo:

Private Sub LeXml()

        '*** Declara Variavel que lerá o documento XML
        Dim objXml As New XmlDocument
        '*** Declara Variavel indicara o caminho da XML no servidor web
        Dim CaminhoXml As String = "C:WebSitesLeituraDeXmlXmlMedicos.xml"
        '*** Adiciono no Metodo 'LoadXml' do objeto 'objXml' o caminho do arquivo no servidor
        objXml.Load(CaminhoXml)

        '*** Lê os Nohs específicos de dentro do Noh Pai 'Medicos' os Nohs Filhos
        Dim MedicoNome As String = objXml.SelectSingleNode("Medicos").ChildNodes(0).InnerText
        Dim MedicoEspec As String = objXml.SelectSingleNode("Medicos").ChildNodes(1).InnerText
        Dim MedicoCrm As String = objXml.SelectSingleNode("Medicos").ChildNodes(2).InnerText

        '*** Lê os SubNohs dentro da SubNoh 'Consultorio'
        Dim Logradouro As String = objXml.SelectSingleNode("Medicos").ChildNodes(3).ChildNodes(0).InnerText
        Dim TipoLogradouro As String = objXml.SelectSingleNode("Medicos").ChildNodes(3).ChildNodes(1).InnerText
        Dim Numero As String = objXml.SelectSingleNode("Medicos").ChildNodes(3).ChildNodes(2).InnerText
        Dim Bairro As String = objXml.SelectSingleNode("Medicos").ChildNodes(3).ChildNodes(3).InnerText
        Dim Municipio As String = objXml.SelectSingleNode("Medicos").ChildNodes(3).ChildNodes(4).InnerText
        Dim UF As String = objXml.SelectSingleNode("Medicos").ChildNodes(3).ChildNodes(5).InnerText
        Dim Cnes As String = objXml.SelectSingleNode("Medicos").ChildNodes(3).ChildNodes(6).InnerText

        '*** Exibe Dados do Medico de maneira simples na Pagina
        Response.Write("> " & objXml.SelectSingleNode("Medicos").Name & "
")
        Response.Write("> " & MedicoNome & "
")
        Response.Write("> " & MedicoEspec & "
")
        Response.Write("> " & MedicoCrm & "

")

        '*** Exibe Dados do Consultorio do Médico
        Response.Write("> " & objXml.SelectSingleNode("Medicos").ChildNodes(3).Name & "
")
        Response.Write("> " & Logradouro & "
")
        Response.Write("> " & TipoLogradouro & "
")
        Response.Write("> " & Numero & "
")
        Response.Write("> " & Bairro & "
")
        Response.Write("> " & Municipio & "
")
        Response.Write("> " & UF & "
")
        Response.Write("> " & Cnes & "
")

    End Sub

Teremos então o seguinte resultado na pagina:

Lendo XML com VB.NET

Espero que tenham gostado, pois é muito util no dia-a-dia para quem trabalha com desenvolvimento e tentei exemplificar de uma forma bem simples mesmo, é claro que podemos montar uma classe 'objeto' para podemos ler uma xml e resgatar seus valores etc, mas o intuito aqui foi mostrar apenas como se chega a um determinado Noh de uma XML.

Ate a Próxima.

Mais sobre: Xml XPath Ler Xml com VB.NET
Share Tweet
Recomendado
Comentários
Carregar comentários
Destaquesver tudo