6. Utilidades
6.3. Validar Schema XML
6.2. Assinar
« Anterior
6.4. LeArquivoANSI
Próximo »

6.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 "dce_v1.00.xsd" para validar o MDF-e 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 encontrados

Retorno:

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

código Mensagem
5501 Mensagem XML é valida
5502 Erro: 5502 - Erro: Arquiv XSD [nomeArquivo] não localizado em: [caminho]
5503 Erro: XML mal formado [mensagem de erro do WINDOWS]
5504 Erro: Arquivo Schemal XML [nomeArquivo] não localizado na pasta [pasta}
5505 Erro: XML não atende a especificação do Schema XML
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]
5507 Erro: O XML não possui nenhuma tag com o namespace da MDF-e: [http://www.portalfiscal.inf.br/mdfe]
5508 Erro: XML com caracteres de identificação de codificação UTF-8 no início do arquivo
5509 Erro: XML com caracteres de identificação de codificação UTF-16 (BE) no início do arquivo
5510 Erro: XML com caracteres de identificação de codificação UTF-16 (LE) no início do arquivo
5511 Erro: XML com caracteres de identificação de codificação UTF-32 (BE) no início do arquivo
5512 Erro: XML com caracteres de identificação de codificação UTF-32 (LE) no início do arquivo
5513 Erro: XML com caracteres de identificação de codificação UTF-7 no início do arquivo

código de retorno 5506

O Schema XML padrão do projeto prevê a existência da assinatura digital na DC-e, contudo, podemos validar o XML a DC-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 'DCe' in namespace 'http://www.portalfiscal.inf.br/dce' has incomplete content. List of possible elements expected: 'http://www.w3.org/2000/09/xmldsig#:Signature'.

em português

Qtde de Erros: 1

1 - Linha:999 Coluna:9 Erro:O elemento 'DCe' in namespace 'http://www.portalfiscal.inf.br/dce' apresenta conteudo incompleto. Lista de possiveis elementos esperados: 'http://www.w3.org/2000/09/xmldsig#:Signature'.

Exemplos:

Visual Basic

 
' declara e instancia DLL

Dim objDCeUtil As Object
 
Set objDCeUtil = CreateObject("DCe_Util.Util")
 
' 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, dce_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 Resultado As Long
 
Dim nomeArquivo As String   ' nome do arquivo que será assinado
'
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
 
'
XSD = "dce_v1.00.xsd"                  ' informar o nome do arquivo de schema XML a ser utilizado.
msgResultado = ""
erroXML = ""
qtdeErros = 0
 
' Faz a validação

Resultado = objDCeUtil.ValidaXML(XML, XSD, msgResultado, qtdeErros, erroXML)
'
'  tratar retorno
'
If Resultado = 5501 Then            ' sucesso, DC-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
6.3. Validar Schema XML
6. Utilidades
« Anterior
6.2. Assinar
Próximo »
6.4. LeArquivoANSI