- 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:
- 2012-10-10 - Versão preliminar.
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