XML de NF-e ou CT-e ou MDF-e - Como validar usando os pacotes de esquemas do Governo

Este artigo explica como fazer a validação de arquivos tipo XML, usando o aplicativo xmllint, e os pacotes de esquemas fornecidos pelo Governo.

[ Hits: 31.852 ]

Por: Arnaldo Luiz Estevao em 11/09/2012


Explicação



Nos manuais de integração dos projetos: NF-e, CT-e e MDF-e, está escrito que os arquivos XML gerados, devem ser validados utilizando os pacotes de esquemas fornecidos pelo Governo, antes de serem enviados.

Estes manuais, bem como os respectivos pacotes, podem ser encontrados nos seguintes links:
Para a finalidade de auxílio ao desenvolvimento, os projetos NF-e e CT-e podem ser validados nos respectivos links e tem a vantagem de validar também as assinaturas digitais:
Entretanto, para validar em ambiente de produção, ou de forma mais rápida, somente a estrutura do documento e a contra validação com o seu respectivo arquivo XSD, e também porque, para o recém lançado projeto MDF-e ainda não há um validador disponível na SEFAZ/RS, existe uma forma mais simples e rápida de fazer isto, esta forma não é a única, e não sei se é a melhor, só sei que funciona bem e poderá ajudar outros desenvolvedores como eu, que é um pequeno aplicativo Open Source, que acompanha a maioria das distribuições de GNU/Linux, chamada xmllint.

Como não sou xiita, quero deixar este link em inglês (que não testei), onde explica como instalar o xmllint no Windows:
Mas, como também sou "pastor", não posso deixar de aproveitar para pregar a conversão do seu coração como desenvolvedor, ao Software Livre. (hehe!)

O terceiro projeto citado, MDF-e (Manifesto de Documentos Fiscais Eletrônicos) ainda está em fase de implantação e apenas disponível na plataforma de homologação, por este motivo, a SEFAZ/MS ainda não dispõe de um validador online para este projeto, e justamente por isso, resolvi escolher este projeto, como exemplo deste artigo.

    Próxima página

Páginas do artigo
   1. Explicação
   2. Separando e executando o teste
   3. Arquivo mdfe.xml
Outros artigos deste autor

Instalando Slackware 11.0 em um pendrive

Impressão remota via WEB

Autenticação mútua SSL em servidores de NF-e e CT-e

Phperl, minha gambiarra para usar Perl como se fosse PHP

Leitura recomendada

Automatizando a conexão com Internet via ADSL com PPPoE no OpenBSD

Backup em HDs da rede

Redundância de links - Mon + Shell Script

Terminal Didático - Shell Script via WEB (PHP + Bootstrap)

Script de backup full + diferencial + compactador + restauração

  
Comentários
[1] Comentário enviado por sandromt em 11/09/2012 - 11:22h

Muito bom seu artigo...estou querendo usar o xmllint para validar um xml de NF-e, mais esta dando o seguinte erro:
"NFe.xml:1: element NFe: Schemas validity error : Element '{http://www.portalfiscal.inf.br/nfe}NFe': No matching global declaration available for the validation root.
SAN.xml fails to validate"

Usei da seguinte forma "xmllint -noout -schema leiauteNFe_v2.00.xsd NFe.xml" ...esse xml esta assinado e valida no ste da sefaz-rs...inclusive esta ate autorizada....eu qureria usar essa regra para validar meus xml de nf-e....sabe me dizer como proceder?

[2] Comentário enviado por arnaldoestevao em 11/09/2012 - 11:32h

fica difícil responder sem analisar seu xml, essa mensagem significa que o xmlns da tag raiz não foi informada ou que não ha somente um único elemento raiz no XML, quando voce envia para a SEFAZ, a mensagem vai dentro um envelope soap que contem o xmlns, quando voce vai validar pelo xmllint precisa colocar dentro de uma tag raiz o xmlns padrão do projeto, como no exemplo do teste do modal

[3] Comentário enviado por sandromt em 11/09/2012 - 15:08h

Deu certo, estava usando o xsd errado...tem que ser o "nfe_v2.00.xsd" ...durante a validacao deu erro nas unidades dos itens, se tiver com dois caracteres da erro, entao eu alterei, tendo mais de dois da certo, o que é estranho pois é de uma nf autorizada hoje mesmo....mais deu certo :)

[4] Comentário enviado por haereticus em 12/09/2012 - 17:30h

Caramba meu sonho era ver escritórios contábeis (no qual trabalho) funcionando no linux. Maioria dos programas do governo pararam no windows XP que em breve nem suporte terá.

[5] Comentário enviado por als04545 em 10/02/2014 - 09:57h

Na tag abaixo, você gerar um hash. Estou desenvolvendo uma nota Mdfe, e gostaria de saber com quais informações do XML é gerado esse hash? É sha1?

<infMDFe versao="1.00" Id="MDFe50120900472038000167580000000000011412345678" >


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts