5. Utilidades
5.3. Validar Schema XML
5.2. Assinar
« Anterior
5.4. LeArquivoANSI
Próximo »

5.3. Validar Schema XML

Validação de Schema XML

Assinatura

int ValidaXML(string XML, string XSD, 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 do MDF-e e das mensagens dos WS do MDF-e.

É necessário informar qual arquivo de schema XML deve ser utilizado na validação no parâmetro XSD.

Parâmetros:

nome tipo fluxo descrição
XML string entrada informar uma string com o XML que será validada.
XSD string entrada informar o nome do arquivo schema XML que será utilizado na validação.
informe "mdfe_v3.00.xsd" para validar o MDF-e da versão 3.00 ou "mdfe_v1.00.xsd" para validar o XML da versão 1.00.
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

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: 5502 - Erro: Arquiv XSD [nomeArquivo] não localizado em: [caminho] DLL -
5503 Erro: XML mal formado [mensagem de erro do WINDOWS] DLL -
5504 Erro: Arquivo Schemal XML [nomeArquivo] não localizado na pasta [pasta} DLL -
5505 Erro: XML não atende a especificação do Schema XML DLL -
5506 Erro: A validação da MDF-e sem assinatura causa um erro de falta de assinatura que pode ser desprezado [Erros de Validação] DLL -
5507 Erro: O XML não possui nenhuma tag com o namespace da MDF-e: [http://www.portalfiscal.inf.br/mdfe] DLL -
5508 Erro: XML com caracteres de identificação de codificação UTF-8 no início do arquivo DLL -
5509 Erro: XML com caracteres de identificação de codificação UTF-16 (BE) no início do arquivo DLL -
5510 Erro: XML com caracteres de identificação de codificação UTF-16 (LE) no início do arquivo DLL -
5511 Erro: XML com caracteres de identificação de codificação UTF-32 (BE) no início do arquivo DLL -
5512 Erro: XML com caracteres de identificação de codificação UTF-32 (LE) no início do arquivo DLL -
5513 Erro: XML com caracteres de identificação de codificação UTF-7 no início do arquivo 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 'MDFe' in namespace 'http://www.portalfiscal.inf.br/mdfe' 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 XSD As String       ' informar o nome do arquivo XSD, mdfe_v1.00.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 = "mdfe_v1.00.xsd"                 ' informar o nome do arquivo de schema XML a ser utilizado.
msgResultado = ""
erroXML = ""
qtdeErros = 0;
'
Dim Resultado As Long
'
Dim objMDFeUtil As Object
'
' instancia a DLL
'
objMDFeUtil := CreateOleObject('MDFe_Util.util');
'
' Faz a validação
'
Resultado = objMDFeUtil.ValidaXML(XML, XSD, 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
 
End Sub
5.3. Validar Schema XML
5. Utilidades
« Anterior
5.2. Assinar
Próximo »
5.4. LeArquivoANSI