- 13.3. Validação de Schema XML
13.3.2. Validar Schema XML [15-08-17] - 13.3.1. O que é um Schema XML?
« Anterior - 13.3.3. Como sanear um XML com falha de Schema XML?
Próximo »
13.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:
- 2010-02-02 - 2Gv0.0 - Versão preliminar.
- 2013-12-02 - 2Gv2.0.1 - Acréscimo dos schemas XML das versões 3.00 e 3.10
- 2017-08-15 - 2Gv4.0.0 - Acréscimo dos schemas XML das versões 4.00
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
- 13.3.2. Validar Schema XML [15-08-17]
13.3. Validação de Schema XML - « Anterior
13.3.1. O que é um Schema XML? - Próximo »
13.3.3. Como sanear um XML com falha de Schema XML?