- 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