Clipper On Line • Ver Tópico - VALIDAR XML

VALIDAR XML

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

Moderador: Moderadores

 

VALIDAR XML

Mensagempor gilberto.braoios » 17 Nov 2016 08:07

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:

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

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
Nota de Moderação:
Toledo: Mensagem editada para colocar a tag [ code ]
Veja como utilizar esta tag: Clique aqui
gilberto.braoios
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 1
Data de registro: 27 Jun 2016 16:00
Cidade/Estado: sao paulo - sp
Curtiu: 0 vez
Mens.Curtidas: 1 vez

VALIDAR XML

Mensagempor JoséQuintas » 20 Nov 2016 01:04

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

VALIDAR XML

Mensagempor depaula.jau » 08 Dez 2016 16:10

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 de usuário

depaula.jau
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 98
Data de registro: 15 Mai 2007 17:07
Cidade/Estado: JAU
Curtiu: 9 vezes
Mens.Curtidas: 14 vezes

VALIDAR XML

Mensagempor JoséQuintas » 08 Dez 2016 18:52

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Projeto hbNFe

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro