Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

AlexWeiss

Localizar e exibir informacoes de uma tag especifica de um XML. VB.Net

Recommended Posts

Pessoal, bom dia.

 

Sou novo no forum e comecei a me aventurar no mundo do desenvolvimento agora.

Estou tentando ler um arquivo XML e localizar uma tag especifica, depois de encontrada, exibir as informacoes das tabelas(nodes) filhos dessa tag e encerrar a pesquisa. Mas estou tendo muita dificuldade e nao consigo mais evoluir

Conto com a ajuda de voces, maters of universe....

 

Esse eh o meu XML.

 

<?xml version="1.0" encoding="UTF-8"?>

<lote itens="3" data="2015-05-14" numero="325">

<item numero="1" dv="4">

<pessoa codigo="T111111" nome="AAAAA BBBBB CCC DDDDDDDDD" cpf="0000000000" rg="0000000000">

<email principal="true">email1@mail.com</email>

<email principal="false">email2@mail.com</email>

<curso codigo="148" data_inicio="2014-02-02" data_fim="2015-01-01" situacao="Concluido">4500900760</curso>

<ue sigla="EADPV" vinculo="Aluno" principal="true"></ue>

<localidade_aula>EAD/PREVAR</localidade_aula>

<recurso tipo="WIFI" />

<recurso tipo="PAPERCUT" />

<recurso tipo="LOGIN" />

</pessoa>

</item>

<item numero="2" dv="5">

<pessoa codigo="T222222" nome="BBBBB AAAAA CCC DDDDDDDDD" cpf="0000000000" rg="0000000000">

<email principal="true">email2@mail.com</email>

<email principal="false">email3@mail.com</email>

<curso codigo="148" data_inicio="2014-02-02" data_fim="2015-01-01" situacao="Jubilado">19876526007</curso>

<ue sigla="EADPV" vinculo="Aluno" principal="true"></ue>

<localidade_aula>EAD/PREVAR</localidade_aula>

<recurso tipo="WIFI" />

<recurso tipo="PAPERCUT" />

<recurso tipo="LOGIN" />

</pessoa>

</item>

<item numero="3" dv="8">

<pessoa codigo="T333333" nome="CCCCC AAAAA BBB DDDDDDDDD" cpf="0000000000" rg="0000000000">

<email principal="true">email3@mail.com</email>

<email principal="false">email4@mail.com</email>

<curso codigo="148" data_inicio="2014-02-02" data_fim="2015-01-01" situacao="Matriculado">1411480067</curso>

<ue sigla="EADPV" vinculo="Aluno" principal="true"></ue>

<localidade_aula>EAD/PREVAR</localidade_aula>

<recurso tipo="WIFI" />

<recurso tipo="PAPERCUT" />

<recurso tipo="LOGIN" />

</pessoa>

</item>

</lote>

 

O que eu preciso eh, localizar nas tabelas(nodes) "pessoa" cujo o codigo seja igual a "T222222" por exemplo e dai, exibir as informacoes referentes a esse usuario, tais como: nome, cpf, rg, email cujo atributo principal seja igual a true, e demais informacoes que vao ate o ultimo <recurso>.

 

Ahhhhh..... Existem usuarios ainda que nao possuem "recursos" e entao preciso tartar esse evento tambem.

 

Ja tentei de tudo, mas como meu conhecimento eh superficial, ficaria muito agradecido se alguem pudesse me ajudar.

 

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para falar a verdade não conheço não, mas vou pesquisar sobre. Mesmo assim, ainda não consegui evoluir com essa empreitada. Ja consumi aproximadamente 46 horas desde 2ª feira e até agora: NADA !

 

Obrigado pela resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, Consegui !!!!

Entretanto, como meu arquivo é grande, aproximadamente 300Mb da leitura até encontrar os dados que busco, demora muito (3-5) minutos.

Existe alguma forma de melhorar essa performance ??? Além disso vejo que existe um consumo muito alto de memoria durante essa pesquisa, acredito que seja pelo envio do XML para memoria !

 

O codigo que eu usei foi o seguinte:

 

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
RichTextBox1.Clear()
If LoginXML.Text = "" Then
MsgBox("Por favor, informe o dado a ser pesquisado e tente novamente.")
Exit Sub
End If

Dim xelement As XElement = xelement.Load("arquivo.xml")
Dim Alunos As IEnumerable(Of XElement) = xelement.Elements()
For Each Aluno In Alunos
Dim Registro As String = Aluno.ToString
Dim Busca As String
Busca = (Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(LoginXML.Text))
If Registro.Contains(Busca) Then
RichTextBox1.Clear()
RichTextBox1.Text = Registro
End If
Next Aluno
End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.