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
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
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/
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/