MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Como importar arquivo xml

    avatar
    enio.eltz
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 58
    Registrado : 19/07/2016

    Como importar arquivo xml Empty Como importar arquivo xml

    Mensagem  enio.eltz 27/5/2021, 12:50

    Bom dia

    Estou tentando ler um arquivo XML que é o resultado de uma consulta SOAP em um Web Server. A busca dos dados no Web Server está operando. No link abaixo tem o tópico onde fiz o código da busca.

    https://www.maximoaccess.com/t39628-resolvidocomo-usar-uma-variavel-em-uma-consulta-soap

    A resposta da consulta é essa:

    Código:
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://meu_servidor/webservice/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
     <SOAP-ENV:Body>
     <ns1:RetornaClientePorNomeResponse>
     <return xsi:type="ns1:ClienteEstrutura">
     <id xsi:type="xsd:int">149</id>
     <nome xsi:type="xsd:string">ENIO ELTZ FILHO</nome>
     <bairro xsi:type="xsd:string">Mundo Novo</bairro>
     <cidade xsi:type="xsd:string">7989</cidade>
     <estado xsi:type="xsd:string">RS</estado>
     <cnpj xsi:type="xsd:string"></cnpj>
     <inscricao_estadual xsi:type="xsd:string"></inscricao_estadual>
     <inscricao_municipal xsi:type="xsd:string"></inscricao_municipal>
     <revenda xsi:type="xsd:int">0</revenda>
     <max_cps xsi:type="xsd:int">0</max_cps>
     <max_chamadas_simult xsi:type="xsd:int">0</max_chamadas_simult>
     <prepaid_mode xsi:type="xsd:int">0</prepaid_mode>
     <cep xsi:type="xsd:string"></cep>
     <cota_diaria_consumo xsi:nil="true"/>
     <cota_mensal_consumo xsi:nil="true"/>
     <tipo_cobranca xsi:nil="true"/>
     <bloqueia_prejuizo xsi:nil="true"/>
     <expira_saldo xsi:nil="true"/>
     <id_externo_cliente xsi:type="xsd:string"></id_externo_cliente>
     </return>
     </ns1:RetornaClientePorNomeResponse>
     </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

    Meu objetivo é ler nestes dados o valor 149 da tag id, mas ainda não consegui. Eu estou fazendo a consulta e os dados retornados estão sendo escritos em uma caixa de texto (fiz isso para ver se a consulta está OK).

    Uma questão que não ficou clara para mim é se essa estrutura de resposta seria um XSD, como já li em algumas pesquisas que eu fiz.

    Fiz algumas pesquisas aqui no fórum para ver se há algo semelhante mas não identifiquei.

    Desde já agradeço o apoio.

    Enio Eltz Filho.
    Eloirp
    Eloirp
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 213
    Registrado : 15/06/2013

    Como importar arquivo xml Empty Re: Como importar arquivo xml

    Mensagem  Eloirp 29/5/2021, 19:49

    busque por Application.ImportXML
    muito fácil de usar
    avatar
    enio.eltz
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 58
    Registrado : 19/07/2016

    Como importar arquivo xml Empty Re: Como importar arquivo xml

    Mensagem  enio.eltz Hoje à(s) 13:51

    Olá

    Eloirp, obrigado pela informação. Eu fiz alguns testes com o Apllication.ImportXML mas sem sucesso. Talvez porque eu não tenha me expressado da forma correta.

    Com Application.ImportXML "caminho_do_arquivo", acStructureAndData eu consegui importar e o Access cria uma tabela nova com estrutura e dados. Mas o objetivo não é bem esse, e eu não tenho um "arquivo".

    Nos testes que estou realizando, os dados a serem importados são resultado de uma consulta em um Web Server. Não há um arquivo salvo em um diretório.

    Eu estou conseguindo realizar a consulta e escrever o resultado em uma caixa de texto, para ter certeza da consulta. A questão é buscar os valores no resultado da consulta e escrever em uma tabela. Como escrever em tabela eu sei fazer. Não estou conseguindo é trabalhar com o resultado da consulta, que não é um arquivo salvo em um diretório.

    O código que eu estou usando para trabalhar com o resultado da consulta está abaixo. Não mandei o código da consulta em si pois está Ok.

    Código:
    Dim strTempBilSai As String
             Dim strUrl
            
                strUrl = "URL de acesso"
            
                Set xmlHttpBilSai = New MSXML2.XMLHTTP30

                With xmlHttpBilSai
                    .Open "POST", strUrl, False
                    .setRequestHeader "Content-Type", "text/xml; charset=utf-8"
                    .setRequestHeader "Content-Length", "Length"
                    .send strEnv
                End With
            
                If CLng(xmlHttpBilSai.Status) < 300 Then
                    strTempBilSai = xmlHttpBilSai.responseText
                
                    'aqui eu inicio o tratamento dos dados              
                    
                    [Forms]![fml_ConsBilhetes]!cmp_ret_temp = strTempBilSai
                    
                    strTempBilSai = ""
                                    
                    Else
                    MsgBox ("ERRO NA IMPORTAÇÃO SAÍDA.")


    Eu tenho um exemplo comigo de como buscar nota XML que encontrei aqui no fórum, mas é baseado em arquivo salvo, que não é o caso aqui.
    Eu já tentei definir strTempBilSai com outros exemplos que achei na internet, mas sem sucesso.

    O resultado da consulta é esse:

    Código:
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://meuip/webservice/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:RetornaListaCDRResponse><return xsi:type="ns1:CDRList"><total_registros xsi:type="xsd:int">7</total_registros><lista_cdr SOAP-ENC:arrayType="ns1:CDR[7]" xsi:type="ns1:CDRArray"><item xsi:type="ns1:CDR"><origem xsi:type="xsd:string">6997@meuip</origem><destino xsi:type="xsd:string">005551103414</destino><contaCobranca xsi:type="xsd:string">6997@meuip</contaCobranca><datahora xsi:type="xsd:string">2021-05-28 13:58:27</datahora><regiao xsi:type="xsd:string">SERVICOS</regiao><duracao xsi:type="xsd:int">30</duracao><preco xsi:type="xsd:float">1.0E-6</preco><sipcode xsi:type="xsd:int">200</sipcode><nomeDisplay xsi:type="xsd:string"></nomeDisplay></item><item xsi:type="ns1:CDR"><origem xsi:type="xsd:string">6997@meuip</origem><destino xsi:type="xsd:string">00555135419408</destino><contaCobranca xsi:type="xsd:string">6997@meuip</contaCobranca><datahora xsi:type="xsd:string">2021-05-28 13:58:46</datahora><regiao xsi:type="xsd:string">FIXO 51 LOC</regiao><duracao xsi:type="xsd:int">30</duracao><preco xsi:type="xsd:float">0.0175</preco><sipcode xsi:type="xsd:int">200</sipcode><nomeDisplay xsi:type="xsd:string"></nomeDisplay></item><item xsi:type="ns1:CDR"><origem xsi:type="xsd:string">6997@meuip</origem><destino xsi:type="xsd:string">005551981181862</destino><contaCobranca xsi:type="xsd:string">6997@meuip</contaCobranca><datahora xsi:type="xsd:string">2021-05-28 13:59:02</datahora><regiao xsi:type="xsd:string">MOVEL 51</regiao><duracao xsi:type="xsd:int">30</duracao><preco xsi:type="xsd:float">0.05</preco><sipcode xsi:type="xsd:int">200</sipcode><nomeDisplay xsi:type="xsd:string"></nomeDisplay></item><item xsi:type="ns1:CDR"><origem xsi:type="xsd:string">6997@meuip</origem><destino xsi:type="xsd:string">00555432860200</destino><contaCobranca xsi:type="xsd:string">6997@meuip</contaCobranca><datahora xsi:type="xsd:string">2021-05-28 13:59:53</datahora><regiao xsi:type="xsd:string">FIXO NACIONAL</regiao><duracao xsi:type="xsd:int">30</duracao><preco xsi:type="xsd:float">0.0175</preco><sipcode xsi:type="xsd:int">200</sipcode><nomeDisplay xsi:type="xsd:string"></nomeDisplay></item><item xsi:type="ns1:CDR"><origem xsi:type="xsd:string">6997@meuip</origem><destino xsi:type="xsd:string">005554999663322</destino><contaCobranca xsi:type="xsd:string">6997@meuip</contaCobranca><datahora xsi:type="xsd:string">2021-05-28 14:00:06</datahora><regiao xsi:type="xsd:string">MOVEL NACIONAL</regiao><duracao xsi:type="xsd:int">0</duracao><preco xsi:type="xsd:float">0</preco><sipcode xsi:type="xsd:int">487</sipcode><nomeDisplay xsi:type="xsd:string"></nomeDisplay></item><item xsi:type="ns1:CDR"><origem xsi:type="xsd:string">6997@meuip</origem><destino xsi:type="xsd:string">0055800310800</destino><contaCobranca xsi:type="xsd:string">6997@meuip</contaCobranca><datahora xsi:type="xsd:string">2021-05-28 14:00:10</datahora><regiao xsi:type="xsd:string">0800</regiao><duracao xsi:type="xsd:int">0</duracao><preco xsi:type="xsd:float">0</preco><sipcode xsi:type="xsd:int">503</sipcode><nomeDisplay xsi:type="xsd:string"></nomeDisplay></item><item xsi:type="ns1:CDR"><origem xsi:type="xsd:string">6997@meuip</origem><destino xsi:type="xsd:string">00558000310800</destino><contaCobranca xsi:type="xsd:string">6997@meuip</contaCobranca><datahora xsi:type="xsd:string">2021-05-28 14:00:22</datahora><regiao xsi:type="xsd:string">0800 FLUX STFC</regiao><duracao xsi:type="xsd:int">30</duracao><preco xsi:type="xsd:float">1.0E-6</preco><sipcode xsi:type="xsd:int">200</sipcode><nomeDisplay xsi:type="xsd:string"></nomeDisplay></item></lista_cdr><status xsi:type="xsd:string"></status></return></ns1:RetornaListaCDRResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>

    Os dados a serem buscados são separados pela tag item.

    Se alguém tem algum exemplo ou dica, agradeço desde já

      Data/hora atual: 16/6/2021, 14:19