AlexWeiss 0 Denunciar post Postado Junho 9, 2015 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
Jhonatan Jorge de Lima 0 Denunciar post Postado Junho 10, 2015 Conhece o LINQ To XML? pelo seu caso aprece que ele atende a necessidade e é relativamente simples de usar. Compartilhar este post Link para o post Compartilhar em outros sites
AlexWeiss 0 Denunciar post Postado Junho 10, 2015 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
AlexWeiss 0 Denunciar post Postado Junho 11, 2015 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 SubEnd IfDim xelement As XElement = xelement.Load("arquivo.xml")Dim Alunos As IEnumerable(Of XElement) = xelement.Elements()For Each Aluno In AlunosDim Registro As String = Aluno.ToStringDim Busca As String Busca = (Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(LoginXML.Text))If Registro.Contains(Busca) Then RichTextBox1.Clear() RichTextBox1.Text = RegistroEnd IfNext AlunoEnd Sub Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Junho 13, 2015 Cara acho que a performance só se você começar a pesquisar algoritmos de busca. Compartilhar este post Link para o post Compartilhar em outros sites