rochinha Posted November 21, 2006 Report Share Posted November 21, 2006 Amiguinhos Sà o noites sem dormir mas tinha que produzir esta biblioteca para que pudesse colocar em meus sistemas um meio de abrir, manipular e salvar estes arquivos de forma rápida e indolor. Sei que existe por ai muitas RDDs ferradas mas a minha biblioteca não tem o intuito de se tornar mais uma e nem mesmo chegar a arranhar o nicho delas. O que pretendia era quase que um trabalho academico, o de construir uma ponte para estes tipos de arquivos com linguagem conhecida e aspecto profissional. Ela possui as funções básicas para manipulação de arquivos XML que comportem em seu esqueleto o SCHEMA, estrutura da tabela de controle. Os comandos básicos podem ser visualizados no arquivo XML.CH, algo como: XML APPEND BLANK XML EDIT XML COMMIT XML SKIP XML DELETE XML REPLACE XML GOTOP XML GOBOTTOM XML SET FILTER TO XML SAVE XML EXECUTE XML LOCATE XML CLOSE XML USE id=code>id=code>E suas respectivas funções XMLAPPEND() XMLEDIT() XMLCOMMIT() XMLSKIP() XMLDELETE() XMLREPLACE() XMLGOTOP() XMLGOBOTTOM() XMLSETFILTER() XMLSAVE() XMLEXECUTE() XMLLocate() XMLUSE() id=code>id=code>À biblioteca foi dimencionada para trabalhar assim com o proprio XML com um arquivo por vez, sem area ou selects. Por isto ela é simples. portanto como ...em cavalo dado não se olha os dentes... façam bom uso e cada alteração que fizer estarei disponibilizando. Podem baixar a biblioteca juntmente com um exemplo prático em: http://www.shoppmarketing.com/forum/xmllib.asp Lembrando que estou utilizando para isto o Harbour 45 Editado por - rochinha on 21/11/2006 02:52:55 Quote Link to comment Share on other sites More sharing options...
rochinha Posted November 21, 2006 Author Report Share Posted November 21, 2006 Amiguinhos Sà o noites sem dormir mas tinha que produzir esta biblioteca para que pudesse colocar em meus sistemas um meio de abrir, manipular e salvar estes arquivos de forma rápida e indolor. Sei que existe por ai muitas RDDs ferradas mas a minha biblioteca não tem o intuito de se tornar mais uma e nem mesmo chegar a arranhar o nicho delas. O que pretendia era quase que um trabalho academico, o de construir uma ponte para estes tipos de arquivos com linguagem conhecida e aspecto profissional. Ela possui as funções básicas para manipulação de arquivos XML que comportem em seu esqueleto o SCHEMA, estrutura da tabela de controle. Os comandos básicos podem ser visualizados no arquivo XML.CH, algo como: XML APPEND BLANK XML EDIT XML COMMIT XML SKIP XML DELETE XML REPLACE XML GOTOP XML GOBOTTOM XML SET FILTER TO XML SAVE XML EXECUTE XML LOCATE XML CLOSE XML USE id=code>id=code>E suas respectivas funções XMLAPPEND() XMLEDIT() XMLCOMMIT() XMLSKIP() XMLDELETE() XMLREPLACE() XMLGOTOP() XMLGOBOTTOM() XMLSETFILTER() XMLSAVE() XMLEXECUTE() XMLLocate() XMLUSE() id=code>id=code>À biblioteca foi dimencionada para trabalhar assim com o proprio XML com um arquivo por vez, sem area ou selects. Por isto ela é simples. portanto como ...em cavalo dado não se olha os dentes... façam bom uso e cada alteração que fizer estarei disponibilizando. Podem baixar a biblioteca juntmente com um exemplo prático em: http://www.shoppmarketing.com/forum/xmllib.asp Lembrando que estou utilizando para isto o Harbour 45 Editado por - rochinha on 21/11/2006 02:52:55 Quote Link to comment Share on other sites More sharing options...
Ale SB Posted November 21, 2006 Report Share Posted November 21, 2006 Grande Rochinha, blz cara, espero q vc nao se cadastrou aqui só p/ fazer este post, pois, espero q venha enrriquecer ainda mais nossa comunidade aqui, com seu conhecimento. Pra quem nao sabe, este cara, segura praticamente sozinho o topico de Five no Forum do Toledo. ----------------------------------------------- Nao manjo muito de XML, ou melhor, praticamente nada. se eu perguntar besteira, pode xingar, hehehhe... citação:À biblioteca foi dimencionada para trabalhar assim com o proprio XML com um arquivo por vez, sem area ou selects.id=quote>id=quote>Se eu entendi direito, aquelas manobras de trabalhar com varios arquivos ao mesmo tempo nao dá ? Entao qual seria a vantagem de trabalhar com este tipo de arquivos ? @braços Ale **IV ENCONTRO DE PROGRAMADORES FIVEWIN ** "Imperdivel, já tô nessa" Alessandro Seribeli Barreto ale.seribeli@ig.com.br aleseribeli@hotmail.com Andradina - SP FWh 2.4, xH80, xMate, Pelles Quote Link to comment Share on other sites More sharing options...
rochinha Posted November 21, 2006 Author Report Share Posted November 21, 2006 Amiguinho Existem tantos RDDs por ai que fica dificil aparecer com mais um e eu não quero somar e sim ampliar nosso leque de possibilidades de integração, pois como voces sabem o papo do momento é SOAP. SOAP nada mais é que a integração de aplicações e ambientes com a troca de arquivos via XML exemplo disso as APIs do Google e dos Correios. Com arquivos XML fica facil o transporte de dados de forma leve e compativel com muita coisa da Micro$oft e outros. Os RDDs que encontramos são designados para grandes volumes de dados e portanto são uma solução profissional e minha biblioteca não tem pretensão de ser um RDD e sim uma ponte para a integração. Na pratica voce pode receber os arquivos XML provenientes de bancos e visualizar os lançamentos de sua conta. Voce pode enviar informações para um site e receber o resultado para sua aplicação e por ai vai. Para montar um aplicativo simples acho que seja possivel pois bastaria integrar o trabalho com áreas mas ue me preocupei mais com o principal, abrir, gravar, excluir, encontrar e salvar. Posteriormente estarei integrando opções como COPY TO e APPEND FROM, CREATE e etc. O importante é que a semente foi plantada e agora devo cultiva-la. Editado por - rochinha on 21/11/2006 11:09:26 Quote Link to comment Share on other sites More sharing options...
kleyber Posted November 21, 2006 Report Share Posted November 21, 2006 Grande Rochinha, Isto realmente é uma grande notÃcia. Agora te pergunto: Tens como fazer alguma coisa com o xHarbour? Abraço, Kleyber Derick xHarbour 0.99.4 + FWH 2.5 Visite São LuÃs - MA A Ilha dos Amores Quote Link to comment Share on other sites More sharing options...
rochinha Posted November 21, 2006 Author Report Share Posted November 21, 2006 Amiguinho Como são vários os sabores acho que seja possivel e irei disponibilizando a medida que for incrementando funções. Quote Link to comment Share on other sites More sharing options...
faria02 Posted December 8, 2006 Report Share Posted December 8, 2006 Rochinha, saudações ! Estou precisando usar um WebService a partir do xHarbour/Fivewin e já dei uma adiantada nos meus conhecimentos de XML. Porém estou tendo dificuldades em encontrar como usar o SOAP com o xHarbour... Você poderia dar umas dicas e postar um exemplo em código de como trocar mensagens SOAP ? Desde já agradeço. MaurÃcio Faria Quote Link to comment Share on other sites More sharing options...
aeluiz Posted December 8, 2006 Report Share Posted December 8, 2006 Olá Rochinha! Muita boa a sua biblioteca!!!! Parabéns! Abraço! Alexandre E.Luiz Quote Link to comment Share on other sites More sharing options...
rochinha Posted December 9, 2006 Author Report Share Posted December 9, 2006 Amiguinhos Obrigado pelo apoio a todos. Bom, o XML é um padrão de arquivo multihierarquico o qual sua estrutura não tem um fim definido, pois podemos ter muitos nós aninhados dentro dos outros, mas para não confundir sempre usamos no maximo 2 ou 3. No XML a seguir capturado via web-service em 5Win/Harbour voce podem ver uma pequena estrutura: <?xml version="1.0" encoding="ISO-8859-1" ?> 1.0 40010 SEDEX 05171340 88330000 31 0 0 0 0 0 -4 Peso excedido id=code>id=code>Portanto o trabalho com nós do mesmo não é assim tão fácil de se manipular Com o exemplo acima minha função XMLGet() cai como uma luva para obter dados do arquivo. No codigo que segue apresento o .RC da DIALOGo principal de interface com o usuário: Salve como SEDEX.RC Sedex DIALOG 28, 62, 267, 175 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "DIALOG_1" FONT 8, "MS Sans Serif" { EDITTEXT 101, 37, 17, 47, 12 EDITTEXT 102, 168, 17, 47, 12 EDITTEXT 103, 78, 50, 67, 12 PUSHBUTTON "Calcular Envio", 105, 149, 50, 107, 27 EDITTEXT 104, 78, 65, 67, 12 LTEXT "Nenhuma operação em curso.", 106, 10, 97, 247, 67 GROUPBOX "Origem", -1, 4, 5, 128, 32, BS_GROUPBOX GROUPBOX "Calculo", -1, 4, 38, 259, 46, BS_GROUPBOX GROUPBOX "Mensagem", -1, 4, 87, 259, 82, BS_GROUPBOX LTEXT "CEP:", -1, 9, 18, 26, 8 LTEXT "Peso em Gramas:", -1, 10, 52, 60, 8 LTEXT "Total a Pagar R$:", -1, 11, 66, 60, 8 GROUPBOX "Destino", -1, 135, 5, 128, 32, BS_GROUPBOX LTEXT "CEP:", -1, 140, 18, 26, 8 } id=code>id=code>O codigo a seguir é um web-service que tem por função passar parâmetros ao servidor de serviços dos Correios afim de trazer uma resposta dada por seus serviços on-line. Imagine que o mesmo método poderá ser usado para enviar dados ao Seraza e SPC e trazer o resultado da pesquisa validando ou não o crédito de um cliente. O código a seguir, feito em 5Win 2.7 e Harbour 45 pode ser adaptado a qualquer versão ou até a qualquer GUI que não 5Win e demonstra de forma clara com é feito este trabalho. Salve como SEDEX.PRG #include "fivewin.ch" static xDLL,oGet,oSay Function Main() local oDlg, oFont local cCEP1:=space(9), cCEP2:=space(9), cPESO:=0 , cTOTAL := 0 DEFINE FONT oFont NAME "ARIAL" SIZE 00,-12 BOLD SET _3DLOOK ON DEFINE DIALOG oDlg RESOURCE "Sedex" TITLE "Correios - Sedex" REDEFINE GET oGet101 VAR cCEP1 PICTURE "99999-999" ID 101 OF oDlg REDEFINE GET oGet102 VAR cCEP2 PICTURE "99999-999" ID 102 OF oDlg REDEFINE GET oGet103 VAR cPESO PICTURE "999999999" ID 103 OF oDlg REDEFINE GET oGet104 VAR cTOTAL PICTURE "@E 99,999.99" ID 104 OF oDlg REDEFINE BUTTON ID 105 OF oDlg ACTION Consulta(cCEP1,cCEP2,cPESO,oGet104,oSay106) REDEFINE SAY oSay106 MEMO ID 106 OF oDlg COLOR nRGB(255,0,0),getsyscolor(15) ACTIVATE DIALOG oDlg CENTERED return nil Function Consulta(cCepOrigem,cCepDestino,cPeso,oTotal,oSay) local oRs, ws ws := TdWebService():new() oSay:SetText( "Aguarde. consulta base de dados" ) cXMLSedex := ws:OpenWS( "http://www.correios.com.br/encomendas/precos/calculo.cfm?" +; "&cepOrigem="+cCepOrigem+; "&cepDestino="+cCepDestino+; "&peso="+alltrim(str(cPeso))+; "&resposta=xml" ) ws:end() oSay:SetText( "Aguarde. salvando o resultado" ) MemoWrit( "sedex.xml", cXMLSedex ) cXMLPreco := XMLGet( "preco_postal", cXMLSedex ) cXMLErros := XMLGet( "descricao" , cXMLSedex ) cTotal := transf( val( cXMLPreco ), "@E 99,999.99" ) oGet104:Refresh() oGet104:SetText( cTotal ) oSay:SetText( iif( empty( cXMLErros ), "Operacao bem sucedida", cXMLErros ) ) return nil Function XMLGet( XMLField, XMLFile ) XMLField := alltrim( XMLField ) XMLFieldINI := rat( "<"+XMLField+">", XMLFile ) + len( "<"+XMLField+">" ) XMLFieldEND := rat( ""+XMLField+">", XMLFile ) - XMLFieldINI return substr( XMLFile, XMLFieldINI, XMLFieldEND ) #include "Websrvce.prg" id=code>id=code>Abaixo vemos a classe WebService que é a responsável por fazer a ponte entre nosso aplicativo e o ponto distante do mesmo. Salve como WEBSRVCE.PRG /* * * Classe WebService * */ #include "dll.ch" //static xdll CLASS TdWebService DATA hOpen DATA sbuffer HIDDEN DATA xDLL HIDDEN METHOD New(buffersize) CONSTRUCTOR METHOD OpenWS(url) METHOD End() ENDCLASS ***************************** METHOD New(conexion,buffersize) CLASS TdWebService DEFAULT buffersize:=3200 ::sbuffer:=buffersize xDll:=LoadLib32("wininet.dll") ::hOpen = InternetOpen("TdWebService", 1,,, 0) RETURN Self ***************************** METHOD OpenWS(url) CLASS TdWebService local hFile,ret,xml hFile = InternetOpenUrl(::hOpen, url,"",0,,0) xml:=space(::sbuffer) InternetReadFile(hFile, @xml, ::sbuffer, @Ret) return subst(alltrim(xml),1,len(alltrim(xml))-5) ***************************** METHOD End() CLASS TdWebService FreeLib32(xDll) return nil ***************************** DLL32 FUNCTION InternetOpen( cApp as LPSTR, n1 AS DWORD, n2 AS LPSTR, n3 AS LPSTR,; n4 AS DWORD ) AS LONG PASCAL ; FROM "InternetOpenA" LIB xdll Dll32 Function InternetReadFile(hFile As 7, @sBuffer As 8, lNumBytesToRead As 7, @lNumberOfBytesRead As 7) As 7 PASCAL Lib xdll Dll32 Function InternetOpenUrl(hInternetSession As 7, lpszUrl As 8, lpszHeaders As 8, dwHeadersLength As 7, dwFlags As 7, dwContext As 7) As 7 FROM "InternetOpenUrlA" PASCAL Lib xdll DLL32 FUNCTION InternetCloseHandle( hSession AS LONG ) AS BOOL PASCAL LIB xdll id=code>id=code>Tenho feito outros web-services para meu aplicativo e sei que mesmo ainda usando o xBase vejo que não existem mais segredos e nem barreiras que eu não consiga transpor, além do próprio Céu. "E que Deus seja louvado!" Quote Link to comment Share on other sites More sharing options...
foliene Posted December 9, 2006 Report Share Posted December 9, 2006 com a sua biblioteca e o exemplo acima, me veio a ideia de fazer a pesquisa de Busca CEP, lá é: http://www.correios.com.br/servicos/cep/cep_loc_log.cfm agora abri o codigo fonte da pagina e nao sei o que pegar para montar o que vc fez.. tem que pegar os nome de campos que ele recebe no post.. isso ainda é novo para mim..mas colocar a busca cep on-line é muito util, e poderia até criar rotinas/relatorios do cadastro dos clientes que estão com CEP errado/duvidoso. Ari Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted December 9, 2006 Report Share Posted December 9, 2006 Uma pergunta... os arquivos de notas fiscais eletronicas sao XML tbm correto? Entao poderei usar a tua classe para criar estes arquivos? Um Xharbraço. Uso Fwh 2.5 (xharbour 0.99.3) e Xmate Para Compilar Impactus Automação Comercial jef2_timber@hotmail.com (91)-32387012 Belem-PA Quote Link to comment Share on other sites More sharing options...
Kleyton Posted December 9, 2006 Report Share Posted December 9, 2006 E para trabalhar com SOAP, Farmácia Popular por exemplo, daria para fazer com esta classe? Kleyton xHarbour 99.5 Clipper5.2E+Clipper5.3b+Blink7+FW2.0d cleitonbala@bol.com.br Quote Link to comment Share on other sites More sharing options...
rochinha Posted December 9, 2006 Author Report Share Posted December 9, 2006 Amiguinhos Por partes Analisando o codigo da pagina de CEPs dos correios o que deve ser passado pelo web-service para pesquisa sao basicamente os campos abaixo: UF Localidade Tipo Logradouro Então o codigo ficaria parecido com isto: cCEPResult := ws:OpenWS( "http://www.correios.com.br/servicos/cep/cep_loc_log.cfm?" +; "&UF="+cUF+; "&localidade="+clocalidade+; "&tipo="+ctipo+; "&logradouro="+clogradouro" ) id=code>id=code>Só não sei o formato da resposta que deverá ser visualizada no conteudo da variavel cCEPResult. citação:Uma pergunta... os arquivos de notas fiscais eletronicas sao XML tbm correto? Entao poderei usar a tua classe para criar estes arquivos? id=quote>id=quote>O XML das e-NF poderá ser tratado com a classe XML existente no xHarbour 0.99.60 e 0.99.61. Minha biblioteca trata o XML de forma mais completa e complexa, ou seja, a estrutura do XML tratado por ela já vem dentro do mesmo XML de dados. citação:E para trabalhar com SOAP, Farmácia Popular por exemplo, daria para fazer com esta classe? id=quote>id=quote>Assim como as e-NF provavelmente este caso seja o mesmo, ou seja, o XML contém somente dados e o mesmo deverá ser analisado por uma rotina criada pelo próprio usuário tratando strings diretamente. Nos dois caso minha biblioteca poderá armazenar os dados passados pelo usuário em verdadeiros bancos de dados XML não podendo portanto tratar de forma direta estes arquivos. Resumindo voce poderá incluir, alterar, excluir, filtrar, pesquisar, indexar, arquivos XML como se fossem DBFs. Inclusive a atualização esta disponivel em http://www.shoppmarketing.com/forum/hbadox.612.09.zip Quote Link to comment Share on other sites More sharing options...
foliene Posted December 9, 2006 Report Share Posted December 9, 2006 rodei o consulta sedex, funcionou legal. coloquei como passou no busca CEP, só que não retorna em XML ..sempre vem em HTML e tive que aumentar o buffer para ver a pagina toda..salvei em um arquivo..mas nao vem o resultado.. Pergunto como ficou sabendo que colocando XML na variavel resposta o arquivo seria criado em XML.. observei que na cep_loc_log.cfm tem um campo hidden 'mode' value='deploy'..tentei passar o 'xml' não dá certo. Ari Quote Link to comment Share on other sites More sharing options...
rochinha Posted December 9, 2006 Author Report Share Posted December 9, 2006 Amiguinho O problema é que não sei onde gravei a string de pesquisa. Talvez eu não tenha dado importancia pois o correios disponibiliza um pacote chamado DNE que possui os ceps do brasil inteiro em formato .TXT então acho que por isto não dei importancia a fazer um web-service relativo. Mas vou continuar procurando e logo logo posto aqui. Quote Link to comment Share on other sites More sharing options...
aeluiz Posted December 11, 2006 Report Share Posted December 11, 2006 Olá Rochinha! Veja o q achei a respeito do WEBService dos correios, parece q tem gente que conseguiu acessar sem problemas... neste link tem uma discussão a arespeito e o sujeito apresenta a solução... será q tem como implantar via sua classe? http://thespoke.net/blogs/thiagocf/archive/2005/08/31/353202.aspx Abraço! Alexandre E.Luiz Quote Link to comment Share on other sites More sharing options...
evandro Posted December 11, 2006 Report Share Posted December 11, 2006 Olá, id=code>id=code>Ao passar este comando o retorno é o código fonte da página, e não um XML com os dados. []s, Evandro G. de Paula Curvelo - MG evandro@skillnet.com.br (Escr. - na Cidade) imortal@skillnet.com.br (Res. - na Roça) FWH 2.6+PellesC+MyMake+xHarbour.org 0.99.5+SqlLib Editado por - evandro on 16/12/2006 18:09:16 Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted May 4, 2008 Report Share Posted May 4, 2008 Ola Rocinha Cara tentei baixar no link os dados da tua classe mas esta off... tem como postar novamente? Alguem ja usou a classe do rocinha, estou vendo como funcionaria para e_NF valeu amigos Um Xharbraço. Uso Fwh 2.5 (xharbour 0.99.3) e Xmate Para Compilar Impactus Automação Comercial jef2_timber@hotmail.com (91)-32387012 Belem-PA Quote Link to comment Share on other sites More sharing options...
bjbernal Posted May 5, 2008 Report Share Posted May 5, 2008 Ola Rochinha ! Tambem não consegui baixar tua lib no link indicado! bjbernal@bol.com.br Abraços. FWH 2.8+WS Quote Link to comment Share on other sites More sharing options...
soares289 Posted May 5, 2008 Report Share Posted May 5, 2008 Olá Rochinha. Eu li o seu post, e achei muito interessando a sua lib. Não estou conseguindo baixalo para testar, + de qualquer forma parabens, realmente parece estar bom. De uns tempos para cá tenho tido muito problema com um xml que pego de retorno de uma pesquisa de cep. Pois o xHarbour ignora alguns caracteres especiais. Eu estou usando uma ActiveX para ler o retorno da pagina. Viaqui que alguns usao uma outra forma, vou dar uma pesquisada mais a fundo. A minha duvida é se você teve algum problema semelhante de perder alguns caracteres especiasicomo o ã ou o Ç na leitura do arquivo. Muito obrigado, abraços. Coding 4Fun, 4Cash, 4Knowleage Carlson A. Soares - SP - SP email: soares_289@hotmail.com FiveWin 7.05 - xHarbour 0.99.61 - SQLRDD São Paulo - SP Quote Link to comment Share on other sites More sharing options...
emotta Posted May 5, 2008 Report Share Posted May 5, 2008 Rochinha, vou baixar sua biblioteca e tentar fazer uma RDD dela usando a USRRDD. Qualquer novidade lhe aviso. Eduardo Motta Quote Link to comment Share on other sites More sharing options...
emotta Posted May 5, 2008 Report Share Posted May 5, 2008 nao consegui baixar. Quote Link to comment Share on other sites More sharing options...
Daniel Lopes Filho Posted May 5, 2008 Report Share Posted May 5, 2008 tb nao consegui baixar ... coloca no rapidshare ou dicas do fw ***** xharbour 1.1.0 + gtwvw + dbfcdx fw 8.01+borland resouce workshop e começando a mexer com txbrowse fwppc (comprei ainda nao usei) USANDO GTWVW + FW JUNTO .... msn..: zazibr@hotmail.com skype: zazibr Daniel lopes Filho Campo Grande/MS Editado por - zazibr on 05/05/2008 14:14:32 Quote Link to comment Share on other sites More sharing options...
vagner Posted May 5, 2008 Report Share Posted May 5, 2008 Olá Gente O Post do Rochinha é de 2006 , talvés nem tenha mais no provedor dele Vagner Wirts VI Encontro está chegando , não perca Quote Link to comment Share on other sites More sharing options...
integresis Posted May 5, 2008 Report Share Posted May 5, 2008 Talvez consigam falar com ele no www.pctoledo.com.br CHARLES Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.