Busca CEP na net

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Busca CEP na net

Mensagem por Itamar M. Lins Jr. »

Explique isso p/ os programas! Não para nós.
Tem algum programa ai que ler esse XML ? Não é o que vamos ou podemos criar, são os prontos.
Cadê o node endereço ? ou node Logradouro ? etc...

Temos o node <table> o node <tr> e os nodes <td>, no <td> temos que adivinhar que o primeiro é endereço, o segundo "<td>" o bairro... e se mais na frente os caras(programadores lá do CTE) colocarem o <td> do bairro em outra posição ?

Como disse está mal feito ou incompleto.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Busca CEP na net

Mensagem por Toledo »

Itamar M. Lins Jr. escreveu:Como disse está mal feito ou incompleto.
Amigos, este link do buscacep do Correios tem como origem um formulário de consulta de CEP, e a finalidade dele não é para ser utilizado como um webservice, então o seu retorno está como HTML.

Na mensagem postada pelo nosso amigo Cavalo Marinho, tem uma opção que tem um retorno melhor formatado.

Retorno com piped:
http://viacep.com.br/ws/16015040/piped/
cep:16015-040|logradouro:Rua Afonso Pena|complemento:de 821/822 a 1679/1680|bairro:Vila Mendonça|localidade:Araçatuba|uf:SP|ibge:3502804
Retorno com xML:
http://viacep.com.br/ws/16015040/xml/
<?xml version="1.0" encoding="UTF-8"?>
<xmlcep>
<cep>16015-040</cep>
<logradouro>Rua Afonso Pena</logradouro>
<complemento>de 821/822 a 1679/1680</complemento>
<bairro>Vila Mendonça</bairro>
<localidade>Araçatuba</localidade>
<uf>SP</uf>
<ibge>3502804</ibge>
</xmlcep>
Veja outros tipos de retorno e opções de consultas em http://viacep.com.br/

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Busca CEP na net

Mensagem por JoséQuintas »

Entendi. Quer usar a classe normal pra XML.
Tente isto:

Código: Selecionar todos

FUNCTION LimpaXml( cXml )
   DO WHILE "> " $ cXml
      cXml := StrTran( cXml, "> ", ">" )
   ENDDO
   RETURN cXml
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Busca CEP na net

Mensagem por Itamar M. Lins Jr. »

Ola!

Código: Selecionar todos

Function ChkCep(cCep)
LOCAL oHTTP, cURL,oXML,oCEP,oDados

cURL := "http://viacep.com.br/ws/"+cCep+"/xml/"
oHTTP:= TIPClientHTTP():New( cURL )
   IF !oHTTP:Open()
      alert( "Erro conectando:", oHTTP:lastErrorMessage() )
      RETURN .F.
   ENDIF
   cHtml := hb_UTF8ToStr( oHTTP:ReadAll() )
   oHTTP:Close()
   oXML := TXMLDocument():New( cHtml, HBXML_STYLE_NOESCAPE )
   IF oXML:nError != HBXML_ERROR_NONE
      alert( "xml com problema " + Str( oXML:nError ) )
      RETURN
   ENDIF
   oCEP := oXML:findfirst( "xmlcep" )
   IF oCEP == NIL
      alert( "TAG xmlcep não localizada." )
      RETURN
   ENDIF
   oDados := TXmlIterator():New( oCEP )

cUF :=""
cCID:=""
cBAI:=""
cLOG:=""
cRUA:=""
cIBGE:=""

   DO WHILE .T.

      oCurrent := oDados:Next()
      IF oCurrent == NIL
         Exit //Fim da Leitura
      ELSE
         IF oCurrent:cName == "logradouro"
            cRUA := oCurrent:cData 
         ELSEIF oCurrent:cName == "complemento"
            cCOMPLEMENTO := oCurrent:cData
         ELSEIF oCurrent:cName == "bairro"
            cBAI := oCurrent:cData
         ELSEIF oCurrent:cName == "localidade"
            cCID := Upper(oCurrent:cData)
         ELSEIF oCurrent:cName == "uf"
            cUF := oCurrent:cData
         ELSEIF oCurrent:cName == "ibge"
            cIBGE := oCurrent:cData
         ENDIF
      ENDIF            
   ENDDO
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder