11.3. Validação de Schema XML
11.3.2. Validar Schema XML
11.3.1. O que é um Schema XML?
« Anterior
11.3.3. Como sanear um XML com falha de Schema XML?
Próximo »

11.3.2. Validar Schema XML

Validação de Schema XML

Assinatura

int ValidaXML(string XML, long tipoXML, out string msgResultado, out long qtdeErros, out string erroXML)

Descrição:

Funcionalidade para realizar a validação de Schema XML em um documento XML.

É necessário informar qual documento XML que se prentende validar no parâmetro tipoXML.

Parâmetros:

nome tipo fluxo descrição
XML string entrada informar uma string com o XML que será validada
tipoXML long entrada informar o código do tipoXML do schema XML que será utilizado na validação
msgResultado string saída retorna a literal com resultado da chamada da DLL
qtdeErros long saída retorna a quantidade de erros encontrados
erroXML string saída retorna um texto com o erros de validações encontados

Valores do tipoXML

  • 0 - cabeçalho (cabecMsg_v1.02)
  • 1 - CT-e assinado (CTe_v1.02.xsd)
  • 2 - Envio de Lote de CT-e (enviCTe_v1.02.xsd)
  • 3 - Retorno Lote de CT-e (retEnviCTe_v1.02.xsd)
  • 4 - Busca Resultado de CT-e (consReciCTe_v1.01.xsd)
  • 5 - Retorno de Resultado de CT-e (retConsReciCTe_v1.01.xd)
  • 6 - Cancelamento de CT-e (cancCTe_v1.01.xsd)
  • 7 - Retorno de Cancelamento de CT-e (retCancCTe_v1.01.xsd)
  • 8 - Inutilizacao de Numeração de CT-e (inutCTe_v1.01.xsd)
  • 9 - Retorno de Inutilização de CT-e (retInutCTe_v1.01.xsd)
  • 10 - Consulta Situação de CT-e (consSitCTe_v1.01.xsd)
  • 11 - Retorno de Consulta Situação de CT-e (retConsSitCTe_v1.01.xsd)
  • 12 - Consulta Status de Serviço (consStatServ_v1.01.xsd)
  • 13 - Retorno de Consulta Status de Serviço (retConsStatServ_v1.01.xsd)
  • 14 - Consulta Cadastro de Contribuintes (consCad_v1.01.xsd)
  • 15 - Retorno da Consulta Cadastro de Contribuintes (retConsCad_v1.01.xsd)
  • 16 - Proc CT-e (procCTe_v1.02.xsd)
  • 17 - Proc CancCT-e (procCancCTe_v1.01.xsd)
  • 18 - Proc InutCTe (procInutCTe_v1.01.xsd)
  • 19 - CT-e assinado (CTe_v1.03.xsd)
  • 20 - Envio de Lote de CT-e (enviCTe_v1.03.xsd)
  • 21 - Retorno Lote de CT-e (retEnviCTe_v1.03.xsd)
  • 22 - Busca Resultado de CT-e (consReciCTe_v1.03.xsd)
  • 23 - Retorno de Resultado de CT-e (retConsReciCTe_v1.03.xd)
  • 24 - Cancelamento de CT-e (cancCTe_v1.03.xsd)
  • 25 - Retorno de Cancelamento de CT-e (retCancCTe_v1.03.xsd)
  • 26 - Inutilizacao de Numeração de CT-e (inutCTe_v1.03.xsd)
  • 27 - Retorno de Inutilização de CT-e (retInutCTe_v1.03.xsd)
  • 28 - Consulta Situação de CT-e (consSitCTe_v1.03.xsd)
  • 29 - Retorno de Consulta Situação de CT-e (retConsSitCTe_v1.03.xsd)
  • 30 - Consulta Status de Serviço (consStatServ_v1.03.xsd)
  • 31 - Retorno de Consulta Status de Serviço (retConsStatServ_v1.03.xsd)
  • 32 - Proc CT-e (procCTe_v1.03.xsd)
  • 33 - Proc CancCT-e (procCancCTe_v1.03.xsd)
  • 34 - Proc InutCTe (procInutCTe_v1.03.xsd)
  • 35 - CT-e assinado (CTe_v1.04.xsd)
  • 36 - Envio de Lote de CT-e (enviCTe_v1.04.xsd)
  • 37 - Retorno Lote de CT-e (retEnviCTe_v1.04.xsd)
  • 38 - Busca Resultado de CT-e (consReciCTe_v1.04.xsd)
  • 39 - Retorno de Resultado de CT-e (retConsReciCTe_v1.04.xd)
  • 40 - Cancelamento de CT-e (cancCTe_v1.04.xsd)
  • 41 - Retorno de Cancelamento de CT-e (retCancCTe_v1.04.xsd)
  • 42 - Inutilizacao de Numeração de CT-e (inutCTe_v1.04.xsd)
  • 43 - Retorno de Inutilização de CT-e (retInutCTe_v1.04.xsd)
  • 44 - Consulta Situação de CT-e (consSitCTe_v1.04.xsd)
  • 45 - Retorno de Consulta Situação de CT-e (retConsSitCTe_v1.04.xsd)
  • 46 - Consulta Status de Serviço (consStatServ_v1.04.xsd)
  • 47 - Retorno de Consulta Status de Serviço (retConsStatServ_v1.04.xsd)
  • 48 - Proc CT-e (procCTe_v1.04.xsd)
  • 49 - Proc CancCT-e (procCancCTe_v1.04.xsd)
  • 50 - Proc InutCTe (procInutCTe_v1.04.xsd)
  • 51 - EventoCTe (eventoCTe_v1.04.xsd)
  • 52 - CT-e assinado (CTe_v2.00.xsd)
  • 53 - Envio de Lote de CT-e (enviCTe_v2.00.xsd)
  • 54 - Retorno Lote de CT-e (retEnviCTe_v2.00.xsd)
  • 55 - Busca Resultado de CT-e (consReciCTe_v2.00.xsd)
  • 56 - Retorno de Resultado de CT-e (retConsReciCTe_v2.00.xd)
  • 57 - Inutilizacao de Numeração de CT-e (inutCTe_v2.00.xsd)
  • 58 - Retorno de Inutilização de CT-e (retInutCTe_v2.00.xsd)
  • 59 - Consulta Situação de CT-e (consSitCTe_v2.00.xsd)
  • 60 - Retorno de Consulta Situação de CT-e (retConsSitCTe_v2.00.xsd)
  • 61 - Consulta Status de Serviço (consStatServ_v2.00.xsd)
  • 62 - Retorno de Consulta Status de Serviço (retConsStatServ_v2.00.xsd)
  • 63 - Proc CT-e (procCTe_v2.00.xsd)
  • 64 - Proc InutCTe (procInutCTe_v2.00.xsd)
  • 65 - EventoCTe (eventoCTe_v2.00.xsd)
  • 66 - Proc EventoCTe (procEventoCTe_v2.00.xsd)
  • 67 - CT-e assinado (cte_v3.00.xsd)
  • 68 - Envio de Lote de CT-e (enviCTe_v3.00.xsd)
  • 69 - Retorno Lote de CT-e (retEnviCTe_v3.00.xsd)
  • 70 - Busca Resultado de CT-e (consReciCTe_v3.00.xsd)
  • 71 - Retorno de Resultado de CT-e (retConsReciCTe_v3.00.xd)
  • 72 - Inutilizacao de Numeração de CT-e (inutCTe_v3.00.xsd)
  • 73 - Retorno de Inutilização de CT-e (retInutCTe_v3.00.xsd)
  • 74 - Consulta Situação de CT-e (consSitCTe_v3.00.xsd)
  • 75 - Retorno de Consulta Situação de CT-e (retConsSitCTe_v3.00.xsd)
  • 76 - Consulta Status de Serviço (consStatServ_v3.00.xsd)
  • 77 - Retorno de Consulta Status de Serviço (retConsStatServ_v3.00.xsd)
  • 78 - Proc CT-e (procCTe_v3.00.xsd)
  • 79 - Proc InutCTe (procInutCTe_v3.00.xsd)
  • 80 - EventoCTe (eventoCTe_v3.00.xsd)
  • 81 - Proc EventoCTe (procEventoCTe_v3.00.xsd)
  • 82 - CT-e Outros Serviços (cteOS_v3.00.xsd)
  • 83 - Proc CT-e Outros Servicos (procCTeOs_v3.00.xsd)
  • 84 - GTV-e (GTVe_v3.00.xsd)
  • 85 - procGTV-e (procGTVe_v3.00.xsd)
  • 86 - CT-e assinado (cte_v4.00.xsd)
  • 87 - Consulta Situação de CT-e (consSitCTe_v4.00.xsd)
  • 88 - Retorno de Consulta Situação de CT-e (retConsSitCTe_v4.00.xsd)
  • 89 - Consulta Status de Serviço (consStatServ_v4.00.xsd)
  • 90 - Retorno de Consulta Status de Serviço (retConsStatServ_v4.00.xsd)
  • 91 - Proc CT-e (procCTe_v4.00.xsd)
  • 92 - EventoCTe (eventoCTe_v4.00.xsd)
  • 93 - Proc EventoCTe (procEventoCTe_v4.00.xsd)
  • 94 - CT-e Outros Serviços (cteOS_v4.00.xsd)
  • 95 - Proc CT-e Outros Servicos (procCTeOs_v4.00.xsd)
  • 96 - GTV-e (GTVe_v4.00.xsd)
  • 97 - procGTV-e (procGTVe_v4.00.xsd)

Retorno:

O código numérico devolvido no parâmetro msgResultado tem os seguintes significados:

código Mensagem
0 OK - mensagem XML válida
1 Erro: tipoXML: [tipoXMLinválido] (fora do intervalor 0-83)
2 Erro: arquivo de Schema XML [nome do arquivo] não localizado
3 Erro: XML mal formado
4 Erro: XML não atende Schema XML
5 Erro: não previsto
6 Erro: XML com caracteres de identificação de codificação UTF-8/16/32/7

Histórico de atualização:

Exemplos de uso:

Visual Basic 6.0

'
' declaração das variáveis que serão utilizadas na passagem de parâmetros da DLL
'
' ********IMPORTANTE O tipoXML da versão 1.04 é 35 ***************
'
Dim XML As String   ' informar uma string com o XML que será validada.
Dim msgResultado As String  ' retorna a literal do resultado da chamada do WS   
Dim erroXML  As String  ' retorna um texto com o erros de validações encontados
Dim tipoXML  As Long    ' informar o código do ***tipoXML*** do schema XML que será utilizado na validação
Dim qtdeErros As Long   ' retorna a literal com resultado da chamada da DLL
Dim resultado As Long   ' código do resultado da chamada da DLL
'
'  carregar arquivo XML na string
'
Dim nomeArquivo As String   ' nome do arquivo que será validado
'
nomeArquivo = "exemplo.xml"
'
'   Carrega o conteúdo do nome do arquivo em XML
'
Open nomeArquivo For Input As #1
XML= Input$(LOF(1), #1)
Close #1
 
' ********IMPORTANTE O tipoXML da versão 1.04 é 35 ***************
tipoXML = 35        ' validar CT-e (opção fixa para validar CT-e layout 1.04 neste exemplo)
qtdeErros = 0       ' quantidade de erros, se o XML não estiver assinado vai ocorrer um erro
erroXML = ""        ' retorna um texto com o erros de validações encontados
msgResultado = ""   ' retorna a literal com resultado da chamada da DLL 
resultado  = 0      ' código do resultado da chamada da DLL

'
' referenciando a DLL em late binding
' não é necessário fazer o reference da DLL
' o intelisense não funciona
'
Dim objCTeUtil As Object
 
Set objCTeUtil = CreateObject("CTe_Util.Util")
 
'
Screen.MousePointer = vbHourglass    ' ponteiro ampulheta
'
'
resultado = objCTeUtil.ValidaXML(XML, tipoXML, msgResultado, qtdeErros, erroXML)
'
'
Screen.MousePointer = vbDefault      ' ponteiro normal
'
'  tratar retorno
'
If (resultado = 0) Then
 
MsgBox msgResultado, vbInformation, "Informação"
 
Else
 
MsgBox "Processo de validação do XML falhou..." & vbCrLf & msgResultado, vbExclamation, "Atenção"
 
End If
'
'  liberar DLL
'
Set objCTeUtil = Nothing
 
End Sub
11.3.2. Validar Schema XML
11.3. Validação de Schema XML
« Anterior
11.3.1. O que é um Schema XML?
Próximo »
11.3.3. Como sanear um XML com falha de Schema XML?