Necesito una ayudita con XML
Necesito una ayudita con XML
Tengo una base de datos con los medicamentos, antiguamente se actualizaba desde una base de datos Acces, por lo que simplemente exportaba la tabla de acces a DBF y resolvía el problema, ahora ya viene en formato XML, y no se por donde meterle mano.
Mi idea sería desde código ir leyendo el archivo xml, y buscando si el elemento leido está en la DBF, y de no estar añadirlo.
Pero no se como empezar con todo.
Un saludo y mil gracias
Mi idea sería desde código ir leyendo el archivo xml, y buscando si el elemento leido está en la DBF, y de no estar añadirlo.
Pero no se como empezar con todo.
Un saludo y mil gracias
Re: Necesito una ayudita con XML
Miara se ayuda:
http://www.pctoledo.com.br/forum/viewto ... =4&t=13103
http://www.pctoledo.com.br/forum/viewto ... 20&t=11223
http://www.pctoledo.com.br/forum/viewto ... f=4&t=9528
http://www.pctoledo.com.br/forum/viewto ... =46&t=9083
http://www.toyanet.com.br/
Saludos.
http://www.pctoledo.com.br/forum/viewto ... =4&t=13103
http://www.pctoledo.com.br/forum/viewto ... 20&t=11223
http://www.pctoledo.com.br/forum/viewto ... f=4&t=9528
http://www.pctoledo.com.br/forum/viewto ... =46&t=9083
http://www.toyanet.com.br/
Saludos.
João Santos - São Paulo - Brasil
Re: Necesito una ayudita con XML
Algo asi:
Code: Select all
#define CR_LF chr(13) + chr(10)
***************
FUNCTION MAIN()
***************
local lRet := .T.
if !InternetOK()
Alert("Sem conexão com a Internet. Verifique...")
return .F.
endif
//
// ABERTURA DAS FUNCOES PARA WEBSERVICE DO XHARBOUR - OBJETO HTTP
//
try
http := CreateObject( "MSXML2.XMLHTTP" )
catch
try
http := CreateObject( "MSXML2.XMLHTTP" )
catch
Alert("Erro na criação do objeto MSXML2.XMLHTTP : " + Ole2TxtError())
end
end
//
// CRIA OBJETO XML
//
try
doc := CreateObject( "MSXML2.DOMDocument" )
catch
try
doc := CreateObject( "MSXML2.DOMDocument" )
catch
Alert("Erro na criacao do objeto MSXML2.DOMDocument : " + Ole2TxtError())
return .F.
end
end
cXml := ""
cXml += '<?xml version="1.0" encoding="ISO-8859-1" ?>' + CR_LF
cXml += '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">' + CR_LF
cXml += ' <soapenv:Header/>' + CR_LF
cXml += ' <soapenv:Body>' + CR_LF
cXml += ' <tem:ConsultaDadosArquivoSNGPC>' + CR_LF
cXml += ' <tem:Email>' + SEU_EMAIL_AQUI + '</tem:Email>' + CR_LF
cXml += ' <tem:Senha>' + SUA_SENHA_AQUI + '</tem:Senha>' + CR_LF
cXml += ' <tem:CNPJ>' + CNPJ_DA_EMPRESA + '</tem:CNPJ>' + CR_LF
cXml += ' <tem:Hash>' + HASH_DO_ARQUIVO + '</tem:Hash>' + CR_LF
cXml += ' </tem:ConsultaDadosArquivoSNGPC>' + CR_LF
cXml += ' </soapenv:Body> ' + CR_LF
cXml += '</soapenv:Envelope>' + CR_LF
//
// ENDERECO HOMOLOGACAO
//
http:Open( "POST", "http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?WSDL HTTP/1.1", .F. )
http:SetRequestHeader( "Content-Type" , "text/xml;charset=ISO-8859-1" )
http:SetRequestHeader( "SOAPAction" , "http://tempuri.org/ConsultaDadosArquivoSNGPC" )
http:SetRequestHeader( "Host" , "homologacao.anvisa.gov.br" )
//
// ENDERECO PRODUCAO
//
// http:Open( "POST", "http://sngpc.anvisa.gov.br/webservice/sngpc.asmx?WSDL HTTP/1.1", .F. )
// http:SetRequestHeader( "Content-Type" , "text/xml;charset=ISO-8859-1" )
// http:SetRequestHeader( "SOAPAction" , "http://tempuri.org/ConsultaDadosArquivoSNGPC" )
// http:SetRequestHeader( "Host" , "sngpc.anvisa.gov.br" )
doc:LoadXML( cXml )
http:send( doc:xml )
response := http:responseText
oXmlDoc := TXmlDocument():new()
oXMlDoc:read( response )
oXmlNode := oXmlDoc:findFirst( "ConsultaDadosArquivoSNGPCResult" )
cDados := oXmlNode:cData
oXMlDoc:read( cDados )
oXmlNode := oXmlDoc:findFirst( "DATAVALIDACAO" )
if oXmlNode == NIL .or. oXmlNode:cData == NIL .or. empty( oXmlNode:cData )
Alert("Arquivo ainda nao foi validado...")
lRet := .F.
else
cMens := oXmlNode:cData
oXmlNode := oXmlDoc:findFirst( "MENSAGEMVALIDACAO" )
if oXmlNode == NIL
Alert("Arquivo validado em : " + cMens )
else
nHandle := fcreate( "temp.txt" )
fwrite( nHandle, oXmlNode:cData )
fclose( nHandle )
nHandle := fopen( "temp.txt" )
aLinhas := {}
cLinha := ""
while HB_FReadLine( nHandle, @cLinha, "[NOVA_LINHA]" ) == 0
aadd( aLinhas, cLinha )
enddo
aadd( aLinhas, cLi
nha )
fclose( nHandle )
if Alert("Arquivo enviado n„o foi recebido. Emite relat¢rio com erros ?", { "SIM", "NAO" } ) == 1
// IMPRIME RELATORIO COM ERROS DE VALIDACAO DO XML
endif
lRet := .F.
endif
endif
RETURN lRet
*********************
FUNCTION InternetOK()
*********************
local aHosts, cName, cAddress := "www.google.com.br"
InetInit()
aHosts := InetGetHosts( cAddress )
if aHosts == NIL .or. len(aHosts) == 0
InetCleanup()
return .F.
endif
InetCleanup()
RETURN .T.
João Santos - São Paulo - Brasil
Re: Necesito una ayudita con XML
Gracias, pero lo que en realidad necesito es extraer los datos del archivo XML, leerlo como si de una base de datos se tratara, pues el documento está en el disco local.
Saludos.
José Luis
Saludos.
José Luis
Re: Necesito una ayudita con XML
José Luis,
Antonio Linares, amablemente, fabricó y cedió a la comunidad un xml reader. Creo que te puede servir.
El arranque del proyecto es este http://forums.fivetechsupport.com/viewt ... xml+reader
En bitbucket, debe estar, no lo sé, el .exe del xml reader y quizá mas actualizado el codigo.
Saludos.
Antonio Linares, amablemente, fabricó y cedió a la comunidad un xml reader. Creo que te puede servir.
El arranque del proyecto es este http://forums.fivetechsupport.com/viewt ... xml+reader
En bitbucket, debe estar, no lo sé, el .exe del xml reader y quizá mas actualizado el codigo.
Saludos.
Re: Necesito una ayudita con XML
Muchas gracias, me pongo a revisarlo y a ver que saco.
Un saludo y mil gracias
José Luis
Un saludo y mil gracias
José Luis
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
Re: Necesito una ayudita con XML
Hola José Luis:
¿ Avanzaste sobre este asunto ? Me encuentro con el mismo problema y me vendría bien algún ejemplo sobre el tema. Gracias.
¿ Avanzaste sobre este asunto ? Me encuentro con el mismo problema y me vendría bien algún ejemplo sobre el tema. Gracias.
Un saludo,
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
-
- Posts: 188
- Joined: Mon Jun 10, 2013 6:40 pm
Re: Necesito una ayudita con XML
Jose Luis, yo leeo un archivo XML para mis facturas asi :
es una parte de mi fuente, espero y te sirva.
Code: Select all
cFileXml := ".\xml\"+"A"+SubStr(nFactura,2)+".XML"
nHandle := FOpen(cFileXml,2+16)
IF nHandle <> -1
oXml := TXmlDocument():New( nHandle )
IF oXml:nStatus = HBXML_STATUS_OK
oNode := oXml:FindFirst("cfdi:Conceptos")
IF oNode <> NIL
DO WHILE oNode != Nil
IF oNode:cName != nil .AND. upper( oNode:cName ) == "CFDI:CONCEPTO"
IF oNode:GetAttribute("cantidad") <> NIL
nSumaXml += Val(oNode:GetAttribute("importe"))
ENDIF
ELSE
IF oNode:cName != nil .AND. upper( oNode:cName ) == "CFDI:TRASLADO"
nSumaXml += Val(oNode:GetAttribute("importe"))
ENDIF
ENDIF
oNode := oNode:NextInTree()
ENDDO
ENDIF
ENDIF
FClose(nHandle)
ENDIF
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
Re: Necesito una ayudita con XML
Javier, muchas gracias por el código. ¿Te importaría poner el contenido el fichero XML?
Un saludo,
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
-
- Posts: 188
- Joined: Mon Jun 10, 2013 6:40 pm
Re: Necesito una ayudita con XML
Manuel, buen dia
Dame tu correo para mandarte un XML que ocupo para facturas
Dame tu correo para mandarte un XML que ocupo para facturas
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
Re: Necesito una ayudita con XML
Aquí lo tienes: arandarosales arroba telefonica punto net
Un saludo,
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC