14.3. Validação de Schema XML
14.3.2. Validar Schema XML [15-08-17]
14.3.1. O que é um Schema XML?
« Anterior
14.3.3. Como sanear um XML com falha de Schema XML?
Próximo »

14.3.2. Validar Schema XML [15-08-17]

Validação de Schema XML

Assinatura

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

Descrição:

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

A validação é restrita aos XML da NF-e.

É 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 inteiro entrada informar o código do tipoXML do schema XML que será utilizado na validação
msgResultado string saída retorna a literal do resultado da chamada do WS
qtdeErros inteiro 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 - NF-e assinada (nfe_v1.10.xsd)
  • 2 - Envio de Lote de NF-e (enviNFe_v1.10.xsd)
  • 3 - Retorno Lote de NF-e (retEnviNFe_v1.10.xsd)
  • 4 - Busca Resultado de NF-e (consReciNFe_v1.10.xsd)
  • 5 - Retorno de Resultado de NF-e (retConsReciNFe_v1.10.xd)
  • 6 - Cancelamento de NF-e (cancNFe_v1.07.xsd)
  • 7 - Retorno de Cancelamento de NF-e (retCancNFe_v1.07.xsd)
  • 8 - Inutilizacao de Numeração de NF-e (inutNFe_v1.07.xsd)
  • 9 - Retorno de Inutilização de NF-e (retInutNFe_v1.07.xsd)
  • 10 - Consulta Situação de NF-e (consSitNFe_v1.07.xsd)
  • 11 - Retorno de Consulta Situação de NF-e (retConsSitNFe_v1.07.xsd)
  • 12 - Consulta Status de Serviço (consStatServ_v1.07.xsd)
  • 13 - Retorno de Consulta Status de Serviço (retConsStatServ_v1.07.xsd)
  • 14 - Consulta Cadastro de Contribuintes (consCad_v1.01.xsd)
  • 15 - Retorno da Consulta Cadastro de Contribuintes (retConsCad_v1.01.xsd)
  • 16 - Proc NF-e (procNFe_v1.10.xsd)
  • 17 - Proc CancNF-e (procCancNFe_v1.07.xsd)
  • 18 - Proc InutNFe (procInutNFe_v1.07.xsd)
  • 19 - NF-e assinada (nfe_v2.00.xsd)
  • 20 - Envio de Lote de NF-e (enviNFe_v2.00.xsd)
  • 21 - Retorno Lote de NF-e (retEnviNFe_v2.00.xsd)
  • 22 - Busca Resultado de NF-e (consReciNFe_v2.00.xsd)
  • 23 - Retorno de Resultado de NF-e (retConsReciNFe_v2.00.xd)
  • 24 - Cancelamento de NF-e (cancNFe_v2.00.xsd)
  • 25 - Retorno de Cancelamento de NF-e (retCancNFe_v2.00.xsd)
  • 26 - Inutilizacao de Numeração de NF-e (inutNFe_v2.00.xsd)
  • 27 - Retorno de Inutilização de NF-e (retInutNFe_v2.00.xsd)
  • 28 - Consulta Situação de NF-e (consSitNFe_v2.00.xsd)
  • 29 - Retorno de Consulta Situação de NF-e (retConsSitNFe_v2.00.xsd)
  • 30 - Consulta Status de Serviço (consStatServ_v2.00.xsd)
  • 31 - Retorno de Consulta Status de Serviço (retConsStatServ_v2.00.xsd)
  • 32 - Consulta Cadastro de Contribuintes (consCad_v2.00.xsd)
  • 33 - Retorno da Consulta Cadastro de Contribuintes (retConsCad_v2.00.xsd)
  • 34 - Proc NF-e (procNFe_v2.00.xsd)
  • 35 - Proc CancNF-e (procCancNFe_v2.00.xsd)
  • 36 - Proc InutNFe (procInutNFe_v2.00.xsd)
  • 37 - Consulta Situação de NF-e (consSitNFe_v2.01.xsd)
  • 38 - Retorno de Consulta Situação de NF-e (retConsSitNFe_v2.01.xsd)
  • 39 - NF-e assinada (nfe_v3.00.xsd)
  • 40 - Envio de Lote de NF-e (enviNFe_v3.00.xsd)
  • 41 - Retorno Lote de NF-e (retEnviNFe_v3.00.xsd)
  • 42 - Busca Resultado de NF-e (consReciNFe_v3.00.xsd)
  • 43 - Retorno de Resultado de NF-e (retConsReciNFe_v3.00.xd)
  • 44 - Inutilizacao de Numeração de NF-e (inutNFe_v3.00.xsd)
  • 45 - Retorno de Inutilização de NF-e (retInutNFe_v3.00.xsd)
  • 46 - Consulta Situação de NF-e (consSitNFe_v3.00.xsd)
  • 47 - Retorno de Consulta Situação de NF-e (retConsSitNFe_v3.00.xsd)
  • 48 - Consulta Status de Serviço (consStatServ_v3.00.xsd)
  • 49 - Retorno de Consulta Status de Serviço (retConsStatServ_v3.00.xsd)
  • 50 - Proc NF-e (procNFe_v3.00.xsd)
  • 51 - Proc InutNFe (procInutNFe_v3.00.xsd)
  • 52 - NF-e assinada (nfe_v3.10.xsd)
  • 53 - Envio de Lote de NF-e (enviNFe_v3.10.xsd)
  • 54 - Retorno Lote de NF-e (retEnviNFe_v3.10.xsd)
  • 55 - Busca Resultado de NF-e (consReciNFe_v3.10.xsd)
  • 56 - Retorno de Resultado de NF-e (retConsReciNFe_v3.10.xd)
  • 57 - Inutilizacao de Numeração de NF-e (inutNFe_v3.10.xsd)
  • 58 - Retorno de Inutilização de NF-e (retInutNFe_v3.10.xsd)
  • 59 - Consulta Situação de NF-e (consSitNFe_v3.10.xsd)
  • 60 - Retorno de Consulta Situação de NF-e (retConsSitNFe_v3.10.xsd)
  • 61 - Consulta Status de Serviço (consStatServ_v3.10.xsd)
  • 62 - Retorno de Consulta Status de Serviço (retConsStatServ_v3.10.xsd)
  • 63 - Proc NF-e (procNFe_v3.10.xsd)
  • 64 - Proc InutNFe (procInutNFe_v3.10.xsd)
  • 65 - Proc Evento Canc NF-e (procEventoCancNFe_v1.00.xsd)
  • 66 - Proc Evento CC-e NF-e (procCCeNFe_v1.00.xsd)
  • 67 - Proc Evento EPEC (procEPEC_v1.00.xsd)
  • 68 - NF-e assinada (nfe_v4.00.xsd)
  • 69 - Envio de Lote de NF-e (enviNFe_v4.00.xsd)
  • 70 - Retorno Lote de NF-e (retEnviNFe_v4.00.xsd)
  • 71 - Busca Resultado de NF-e (consReciNFe_v4.00.xsd)
  • 72 - Retorno de Resultado de NF-e (retConsReciNFe_v4.00.xd)
  • 73 - Inutilizacao de Numeração de NF-e (inutNFe_v4.00.xsd)
  • 74 - Retorno de Inutilização de NF-e (retInutNFe_v4.00.xsd)
  • 75 - Consulta Situação de NF-e (consSitNFe_v4.00.xsd)
  • 76 - Retorno de Consulta Situação de NF-e (retConsSitNFe_v4.00.xsd)
  • 77 - Consulta Status de Serviço (consStatServ_v4.00.xsd)
  • 78 - Retorno de Consulta Status de Serviço (retConsStatServ_v4.00.xsd)
  • 79 - Proc NF-e (procNFe_v4.00.xsd)
  • 80 - Proc InutNFe (procInutNFe_v4.00.xsd)

Retorno:

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

código Mensagem origem regra
5501 Mensagem XML é valida DLL -
5502 Erro: tipoXML [{0:0}] inválido (fora do intervalo {0:0}) DLL -
5503 Erro: XML mal formado [{0:0}] DLL -
5504 Erro: Arquivo Schemal XML [{0:0}] não localizado na pasta [{1:0]} DLL -
5505 Erro: XML não atende a especificação do Schema XML DLL -
5506 Erro: A validação da NF-e sem assinatura causa um erro de falta de assinatura que pode ser desprezado [{0:0}] DLL -

código de retorno 5506

O Schema XML padrão do projeto prevê a existência da assinatura digital na NF-e, contudo, podemos validar o XML a NF-e antes da assinatura. Neste caso, teremos uma falha de validação de schema XML com código de retorno 5506 que poderá ser ignorada, pois a validação foi realizada em um XML sem assinatura digital.

Mensagens de Erro de falta de assinatura digital

em inglês

Qtde de Erros: 1

1 - Linha:999 Coluna:9 Erro:The element 'NFe' in namespace 'http://www.portalfiscal.inf.br/nfe' has incomplete content. List of possible elements expected: 'http://www.w3.org/2000/09/xmldsig#:Signature'.

em português

Histórico de atualização:

Exemplos:

Visual Basic

 
'
' declaração das variáveis que serão utilizadas na passagem de parâmetros da DLL
'
Dim XML As String       ' informar o xml a ser validado
Dim tipXML As Long      ' tipo do XML a ser validado (Ex. 1 = NF-e assinada versão 1.10 (nfe_v1.10.xsd)
Dim qtdeErros As Long       ' quantide de Erros de validação
Dim erroXML As String       ' retorna com uma string com os erros de validação
Dim msgResultado As String  ' literal com resultado da chamada da DLL
'
'
'  Importante: todas as variáveis utilizadas como parâmetro da DLL devem ser inicializadas
'
'
Dim nomeArquivo As String   ' nome do arquivo que será assinado
'
nomeArquivo = "exemplo.xml"
'
'   Carrega o conteúdo do nome do arquivo em XMLString
'
Open nomeArquivo For Input As #1
XMLString = Input$(LOF(1), #1)
Close #1
'
tipoXML = 1                    ' indica tipo de documento validado, neste caso estamos validando um XML da NF-e versão 1.10
msgResultado = ""
erroXML = ""
qtdeErros = 0;
'
Dim Resultado As Long
'
Dim objNFeUtil As NFe_Util.Util
'
' instancia a DLL
'
Set objNFeUtil = New NFe_Util.Util
'
' Faz a validação
'
Resultado = objNFeUtil.ValidaXML(XML, tipoXML, msgResultado, qtdeErros, errosXML)
'
'  tratar retorno
'
If resultado = 5501 Then            ' sucesso, NF-e ok

MsgBox msgResultado, vbInformation, "Informação"
 
Else
'
' erro de validação retonro <> 5501
' se retorno = 5506 e a validação for antes da assinatura, considerar OK
'
MsgBox "Processo de validação falhou..." & vbCrLf & msgResultado &vbCrLf & erroXML, vbExclamation, "Atenção"
 
End If
'
'  liberar DLL
'
Set objNFeUtil = Nothing
End Sub
14.3.2. Validar Schema XML [15-08-17]
14.3. Validação de Schema XML
« Anterior
14.3.1. O que é um Schema XML?
Próximo »
14.3.3. Como sanear um XML com falha de Schema XML?