Ir para conteúdo

Arquivado

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

Sergiinhonike

Identificando Nome do Atributo e pegando o Valor - XML VB.net

Recommended Posts

Boa Tarde galera, me chamo Sergio e sou novo aqui no forum.

Espero pode ajuda-los no que eu puder mas no momento preciso muito de uma ajudinha, desde já agradeço, vamos lá.

Utilizo o seguinte Arquivo XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Registros>
  <Registro Animal="007">
    <Data>21/54/2154</Data>
    <Sexo>Macho</Sexo>
    <Pai>112</Pai>
    <Mae>589</Mae>
    <Notas>teste</Notas>
    <Foto>C:\Users\Sonia\Pictures\Celular Camera\20130814_153233.jpg</Foto>
  </Registro>
  <Registro Animal="008">
    <Data>21/21/5255</Data>
    <Sexo>Macho</Sexo>
    <Pai>21</Pai>
    <Mae>54</Mae>
    <Notas>878</Notas>
    <Foto>C:\Users\Sonia\Pictures\Celular Camera\20130814_153213.jpg</Foto>
  </Registro>
  <Registro Log="008">
    <Animal>008</Animal>
    <Desc>testando</Desc>
    <Data>21/54/5121</Data>
  </Registro>
  <Registro Log="007">
    <Animal>007</Animal>
    <Desc>testando tambem</Desc>
    <Data>21/54/2154</Data>
  </Registro>
</Registros>

E o seguinte Código para leitura dos dados:

Dim doc As XmlDocument = New XmlDocument()
        doc.Load(Directory & "\SisGado.xml")

        Dim NodeRoot As XmlNode
        NodeRoot = doc.SelectSingleNode("Registros")

        For Each Node In NodeRoot.ChildNodes
            If Node.Attributes.GetNamedItem("Animal").Value = CBId.Text Then
                LbExId.Text = CBId.Text
                LbExData.Text = Node.ChildNodes(0).InnerText
                LbTeste.Text = "Animal Encontrado!"
                'apenas um teste não coloquei pra carregar todos os dados.
                'Exit For               
            end if
            If Node.Attributes.GetNamedItem("Log").Value = CBId.Text Then
                LbTeste.Text = LbTeste.Text & " Log Encontrado!"
                
                'Exit For
            End If
        Next

 

OBS: Ao tirar o comentario " 'Exit For " e deixalo em atividade " Exit For " o código funciona, o animal é encontrado e claro ele termina a " busca " assim não procurando o Log.

 

 

ERRO: Object variable or With block variable not set.


Acredito que esteja acontecendo o seguinte: Ele procura por um Atributo de nome " Animal ", mas está lendo no momento um que se chama " Log ".

Então acredito que já me ajuda se me mostrarem o exemplo de um função que verifique, antes de trabalhar, qual é o nome do Atributo.

Novamente agradeço a atenção!
Aquele Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Noite Quintelab.

Obrigado pela sua atenção, realmente andei buscando esse erro, tento de tudo, só funciona quando tiro o comment.

Realmente existe, o xml está da mesma forma que postei, no primeiro 'if' ele encontra o nó chamado "Animal" e de valor igual ao do combobox que uso pra selecionar os id's dos Animais registrados, porem quando ele lê o proximo nó (for each) e esse mesmo nó se chama "Log" ele parece trabalhar a função: " If Node.Attributes.GetNamedItem("Animal").Value = CBId.Text Then " sendo que o nó se chama "Log" e então surge o erro, ou sei lá...

Mas valeu brother por ter me respondido, se eu conseguir vou postar aqui a solução, falou abraço!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um pouco confuso, o erro esta nessa linha? "If Node.Attributes.GetNamedItem("Animal").Value"

 

Se sim, é por que não existe o nó "Animal"?

 

Se sim, eu acho que basta algo como:

If Node.Attributes.GetNamedItem("Animal")  IsNot Nothing Then

Aí você le o valor depois de checar que é diferente de nulo.

Abraços...

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.