6. Validação de Schema XML
6.2. Validar Schema XML
6.1. O que é um Schema XML?
« Anterior
6.3. Como sanear um XML com falha de Schema XML?
Próximo »

6.2. Validar Schema XML

Validação de Schema XML

Assinatura

int ValidaXML(string XML, string Schema, string pastaSchemas, string nameSpaceSchemas, out string msgResultado, out long qtdeErros, out string erroXML)

Descrição:

Funcionalidade para realizar a validação de Schema XML em um documento XML.

Parâmetros:

nome tipo fluxo descrição
XML string entrada informar uma string com o XML que será validada
Schema string entrada informar o nome do arquivo schema XML com o caminho completo de localização que será utilizado na validação
Exemplo: "C:\distDFe\SchemasNFe\nfe_v4.00.xsd"
pastaSchema string entrada informar a pasta de localização do(s) arquivo(s) schema XML com o caminho completo de localização que estão referenciados em include e/ou import do schema XML principal, normalmente estão localizados na mesma pasta do arquivo schema XML principal.
Exemplo: "C:\distDFe\SchemasNFe\"
nameSpaceSchemas string entrada informar o name space do schema XML principal.
Exemplo: "http://www.portalfiscal.inf.br/nfe"
msgResultado string saída retorna a literal com resultado da chamada da DLL
qtdeErros long saída retorna a quantidade de erros encontrados
erroXML string saída retorna um texto com o erros de validações encontrados

Exemplo de Valores a serem informados nos parâmetros Schema, pastaSchema e nameSpaceSchemas

DF-e Schema pastaSchema nameSpaceSchemas
NF-e C:\APP\distDFe\SchemasNFe\nfe_v4.00.xsd C:\APP\distDFe\SchemasNFe\ http://www.portalfiscal.inf.br/nfe
procNFe C:\APP\distDFe\SchemasNFe\procNFe_v4.00.xsd C:\APP\distDFe\SchemasNFe\ http://www.portalfiscal.inf.br/nfe
CT-e C:\APP\distDFe\SchemasCTe\cte_v4.00.xsd C:\APP\distDFe\SchemasCTe\ http://www.portalfiscal.inf.br/cte
procCTe C:\APP\distDFe\SchemasCTe\procCTe_v4.00.xsd C:\APP\distCTe\SchemasCTe\ http://www.portalfiscal.inf.br/cte
CT-e OS C:\APP\distDFe\SchemasCTe\cteOS_v4.00.xsd C:\APP\distDFe\SchemasCTe\ http://www.portalfiscal.inf.br/cte
procCTeOS C:\APP\distDFe\SchemasCTe\procCTeOS_v4.00.xsd C:\APP\distCTe\SchemasCTe\ http://www.portalfiscal.inf.br/cte
MDF-e C:\APP\distDFe\SchemasMDFe\mdfe_v3.00.xsd C:\APP\distDFe\SchemasMDFe\ http://www.portalfiscal.inf.br/mdfe
procMDFe C:\APP\distDFe\SchemasMDFe\procMDFe_v3.00.xsd C:\APP\distMDFe\SchemasMDFe\ http://www.portalfiscal.inf.br/mdfe

Obs.: Nos exemplos foram informados as pastas SchemaNFe, SchemaCTe e SchemaMDFe que existem na pasta distDFe da DLL.

Retorno:

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

código Mensagem
5501 Mensagem XML é válida
5502 Erro: O parâmetro Schema deve ser informado
5503 Erro: XML mal formado [detalhe do erro]
5504 Erro: Arquivo Schemal XML [valor recebido pela DLL] não localizado
5505 Erro: XML não atende a especificação do Schema XML, analise a lista de erros: [detalhe do erro]
5506 Erro: A validação de um XML sem assinatura causa um erro de falta de assinatura que pode ser desprezado [detalhe do erro]
5507 Erro: O XML não possui nenhuma tag com o namespace informado no parâmetro nameSpaceXSD: [valor recebido pela DLL]
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
5514 Erro: O parâmetro pastaXSD deve ser informado.
5515 Erro: O parâmetro pastaXSD:[valor recebido pela DLL] informado é inválido, Erro do Windows: [detalhe do erro]
5516 Erro: A pasta informada no parâmetro pastaXSD:[valor recebido pela DLL] inexistente.
5517 Erro: O parâmetro nameSpaceXSD deve ser informado.
5518 Erro: O parâmetro nameSpaceXSD informado:[valor recebido pela DLL] é inválido.

Histórico de atualização:

Exemplos de uso:

Visual Basic 6.0

'
' declaração das variáveis que serão utilizadas na passagem de parâmetros da DLL
'
Dim XML As String   ' informar uma string com o XML que será validada.
Dim msgResultado As String  ' retorna a literal do resultado da chamada do WS   
Dim erroXML  As String  ' retorna um texto com o erros de validações encontados
Dim Schema As String    ' nome do arquivo schema XML com o caminho completo
Dim pastaSchema As String ' caminho completo da pasta de localização dos arquivos include/import existentes no schema XML
Dim nameSpaceSchema As String ' namespace do schema XML principal
Dim qtdeErros As Long   ' retorna a literal com resultado da chamada da DLL
Dim resultado As Long   ' código do resultado da chamada da DLL
'
'  carregar arquivo XML na string
'
Dim nomeArquivo As String   ' nome do arquivo que será validado
'
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
 
Schema = ".\distDFe\SchemasCTe\cte_v4.00.xsd";
pastaSchemas = ".\distDFe\SchemasCTe";
nameSpaceSchemas = "http://www.portalfiscal.inf.br/cte";
 
qtdeErros = 0       ' quantidade de erros, se o XML não estiver assinado vai ocorrer um erro
erroXML = ""        ' retorna um texto com o erros de validações encontados
msgResultado = ""   ' retorna a literal com resultado da chamada da DLL 
resultado  = 0      ' código do resultado da chamada da DLL

'
' referenciando a DLL em late binding
' não é necessário fazer o reference da DLL
' o intelisense não funciona
'
Dim objdistDFe As Object
 
Set objdistDFe = CreateObject("distDFe.Util")
 
'
Screen.MousePointer = vbHourglass    ' ponteiro ampulheta
'
'
resultado = objdistDFe.ValidaXML(XML, Schema, pastaSchemas, nameSpaceSchemas, msgResultado, qtdeErros, erroXML)
'
'
Screen.MousePointer = vbDefault      ' ponteiro normal
'
'  tratar retorno
'
If (resultado = 5501) Then
 
MsgBox msgResultado, vbInformation, "Informação"
 
Else
 
MsgBox "Processo de validação do XML falhou..." & vbCrLf & msgResultado, vbExclamation, "Atenção"
 
End If
'
'  liberar DLL
'
Set objdistDFe = Nothing
 
End Sub
6.2. Validar Schema XML
6. Validação de Schema XML
« Anterior
6.1. O que é um Schema XML?
Próximo »
6.3. Como sanear um XML com falha de Schema XML?