VALIDAR XML

Projeto hbNFe (Nota Fiscal Eletronica/Danfe) para [x]Harbour

Moderador: Moderadores

gilberto.braoios
Usuário Nível 1
Usuário Nível 1
Mensagens: 1
Registrado em: 27 Jun 2016 16:00
Localização: sao paulo - sp

VALIDAR XML

Mensagem por gilberto.braoios »

Boa tarde

Pessoal, estou tentando validar um XML de CTE com rotina do Mauricio e Quintas porém sem sucesso, abaixo a rotina com informações do erro. alguém pode me ajuda mais uma vez me apontando onde estou errando:

Código: Selecionar todos

---------------------------------------------------------------------

function validaxml()
LOCAL oDOMDoc, oSchema, ParseError
LOCAL cRETORNO:=HASH()
LOCAL cSchemaFilename:=''

cRETORNO['STATUS']:=.F.
cRETORNO['MSG']:=''
TRY
   oDOMDoc := win_OleCreateObject( "MSXML2.DomDocument.5.0" )
   //oDOMDoc := win_oleCreateObject( _MSXML2_DOMDocument )
CATCH
   cRETORNO['MSG']:='Não foi possível carregar o MSXML para validação do XML'
   RETURN(cRETORNO)
END
TRY
   oDOMDoc:async = .F.
   oDOMDoc:resolveExternals := .F.
   oDOMDoc:validateOnParse  = .T.
   oDOMDoc:LoadXML(cXML)
CATCH
   cRETORNO['MSG']:='Não foi possível carregar o arquivo XML para a validação.'
   RETURN(cRETORNO)
END
IF oDOMDoc:parseError:errorCode <> 0 // XML não carregado
  cRETORNO['MSG']:='Não foi possível carregar o documento pois ele não corresponde ao seu Schema'+HB_OsNewLine()
  RETURN(cRETORNO)
ENDIF
TRY
   oSchema := win_OleCreateObject( "MSXML2.XMLSchemaCache.5.0" )
   //oSchema := win_oleCreateObject( _MSXML2_XMLSchemaCache )
CATCH
   cRETORNO['MSG']:='Não foi possível carregar o MSXML para o schema do XML.'
   RETURN(cRETORNO)
END
 cSchemaFilename := 'c:\schemas\enviCte_v2.00.xsd'
****************************************
//pegou o esquema na pasta
//  c:\schemas\cte_v2.00.xsd
****************************************
IF ! FILE(cSchemaFilename)
  cRETORNO['MSG']:='Arquivo do schema não encontrado '+cSchemaFilename
  RETURN(cRETORNO)
ENDIF
TRY
  oSchema:add( 'http://www.portalfiscal.inf.br/cte', cSchemaFilename )
CATCH oError
  cRETORNO['MSG']:='Falha '+HB_OsNewLine()
  RETURN(cRETORNO)
END
oDOMDoc:Schemas := oSchema
ParseError := oDOMDoc:validate
msginfo(ParseError:errorCode)
msginfo(ParseError:reason)

IF ParseError:errorCode <> 0
   cRetorno['nResult']  := ParseError:errorCode
   cRETORNO['MSG']  := ParseError:reason
   ****************************************
    //retorna o erro abaixo
    //-1072898035C 
   // The element '{http://www.portalfiscal.inf.br/cte}cteProc' is used but not declared in the DTD/Schema.
   ****************************************
   RETURN(cRetorno)
ENDIF
oDOMDoc := nil
ParseError := nil
oSchema := nil
cRETORNO['STATUS']:=.T.

RETURN(cRETORNO)

--------------------------------------------------------------------------------------------
Desde já obrigado



Gilberto
Editado pela última vez por Toledo em 17 Nov 2016 12:18, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

VALIDAR XML

Mensagem por JoséQuintas »

Não vi a mensagem antes.

Nessas horas, talvez retirar todos os bloqueios de "esconder" erros pode ser que ajude.

Em todo caso, dê uma comparada com a rotina de validação atual.

Simplificando:

- A rotina carrega o XML
- Depois carrega o schemma
- E depois valida

Se algum componente não está instalado no Windows, gera erro
Se o xml tem problemas, gera erro ao ser carregado
Se o schemma tem problemas, gera erro ao ser carregado

Infelizmente, o(s) componente(s) da Microsoft fazem isso, por isso o TRY/CATH ou BEGIN SEQUENCE/END SEQUENCE
Retirar esses "evitamentos" de erro podem ajudar a detectar se alguma mensagem de erro útil acabou ficando escondida.
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
depaula.jau
Usuário Nível 2
Usuário Nível 2
Mensagens: 98
Registrado em: 15 Mai 2007 17:07
Localização: JAU

VALIDAR XML

Mensagem por depaula.jau »

Quintas, Boa tarde!!!

Estou com problemas para usar as rotinas de assinatura, com Certificado A1 Instalado em Windows7 64... Ele não assina.

Salvei as dlls , registrei e mesmo assim não leu.

A algo que eu possa checar que vc se lembro ?
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

VALIDAR XML

Mensagem por JoséQuintas »

O que roda em 32 bits fica em \Windows\syswow64
Dentro dela tem o regsvr32.exe pra 32 bits.

Se as rotinas de evitar erro estão atrapalhando, de repente é desbloqueá-las e deixar que aconteça o erro.
Pode facilitar identificar o problema.
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/
Responder