none
Leitura XML$ RRS feed

  • Pergunta

  • Olá amigos,

    Tenho uma estrutura XML parecida com isto.

    <mensagem>
            <cabecalho>
                <identificacaoTransacao>
                        <tipoTransacao>PROTOCOLO</tipoTransacao>
                        <sequencialTransacao>1</sequencialTransacao>
                        <dataRegistroTransacao>2007-12-12</dataRegistroTransacao>
                        <horaRegistroTransacao>12:00:00</horaRegistroTransacao>
                        </identificacaoTransacao>
                <origem>
                        <registro>123456</registro>
                </origem>
                <destino>
                        <registro>145874</registro>
                </destino>
                <versaoPadrao>2.01.01</versaoPadrao>
            </cabecalho>
    </mensagem>

    Preciso pegar os valores de cada item em separado via código.
    Utilizo VB.Net

    Ex:
    Cabeçalho / Identificação transação / Tipo Transação = PROTOCOLO
    Cabeçalho / Identificação transação / sequencialTransação = 1
    Cabeçalho / Identificação transação / dataRegistroTransaçao = 2007-12-12
    Cabeçalho / Identificação transação / horaRegistroTransação = 12:00:00
    Cabeçalho / Origem /Registro = 123456
    Cabeçalho / Destino /Registro = 145874
    Cabeçalho / Versão Padrão = 2.01.01

    Alguém já trabalhou com XML assim ?

    []'s

    Anereu Bighetti
    terça-feira, 27 de fevereiro de 2007 12:13

Respostas

  • Consegui,

    Segue o exemplo pra quem precisar.


     Dim xDoc As New XmlDocument
     xDoc.Load("D:\Recebido\exemplox.xml")

     Dim tipoTransacao As XmlNode = xDoc("mensagem")("cabecalho")("identificacaoTransacao")("tipoTransacao")
     Debug.WriteLine(tipoTransacao.InnerText)

     Dim sequencialTransacao As XmlNode = xDoc("mensagem")("cabecalho")("identificacaoTransacao")("sequencialTransacao")
     Debug.WriteLine(sequencialTransacao.InnerText)

    Dim registro As XmlNode = xDoc("mensagem")("cabecalho")("origem")("registro")
    Debug.WriteLine(registro.InnerText)

    []'s

    Anereu Bighetti

    terça-feira, 27 de fevereiro de 2007 13:55

Todas as Respostas

  • Um modo é usar o caminho absoluto para cada item:

    Dim xDoc As New XmlDocument()

    xDoc.Load(<Caminho para o arquivo>)

    Dim tipoTransacao As XmlNode = xDoc.SelectSingleNode("mensagem/cabecalho/identificacaoTransacao/tipoTransacao")
    Console.WriteLine(tipoTransacao.InnerText)

    Dim sequencialTransacao As XmlNode = xDoc.SelectSingleNode("mensagem/cabecalho/identificacaoTransacao/sequencialTransacao")
    Console.WriteLine(sequencialTransacao.InnerText)

    Dim registro As XmlNode = xDoc.SelectSingleNode("mensagem/cabecalho/origem/registro")
    Console.WriteLine(registro.InnerText)

    terça-feira, 27 de fevereiro de 2007 13:19
  • Não consegui utilizando esta forma.
    Ele não encontra o nó dentro do xml e me retonar nothing.

    Conhece alguma outra ?
    terça-feira, 27 de fevereiro de 2007 13:43
  • Consegui,

    Segue o exemplo pra quem precisar.


     Dim xDoc As New XmlDocument
     xDoc.Load("D:\Recebido\exemplox.xml")

     Dim tipoTransacao As XmlNode = xDoc("mensagem")("cabecalho")("identificacaoTransacao")("tipoTransacao")
     Debug.WriteLine(tipoTransacao.InnerText)

     Dim sequencialTransacao As XmlNode = xDoc("mensagem")("cabecalho")("identificacaoTransacao")("sequencialTransacao")
     Debug.WriteLine(sequencialTransacao.InnerText)

    Dim registro As XmlNode = xDoc("mensagem")("cabecalho")("origem")("registro")
    Debug.WriteLine(registro.InnerText)

    []'s

    Anereu Bighetti

    terça-feira, 27 de fevereiro de 2007 13:55
  • Não tem porque o exemplo acima não funcionar. Eu testei aqui com o XML que você postou e funciona.
    terça-feira, 27 de fevereiro de 2007 14:20
  • Eu testei como tu passou em cima, não consegui.
    Só consegui do jeito que postei agora a pouco.
    Devo ter feito alguma coisa errada.
    terça-feira, 27 de fevereiro de 2007 17:53
  • este link possui uma apostila de XPath, que muito bom para fazer estas pesquisar em aquivos XML!
    http://www.macoratti.net/vb_xpath.htm
    quarta-feira, 7 de março de 2007 20:21