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.419 ]

Por: Arnaldo Luiz Estevao em 11/09/2012


Arquivo mdfe.xml



Como anteriormente, disponibilizo aqui o arquivo mdfe.xml:

<MDFe xmlns="http://www.portalfiscal.inf.br/mdfe">
<infMDFe versao="1.00" Id="MDFe50120900472038000167580000000000011412345678" >
<ide><cUF>50</cUF><tpAmb>2</tpAmb><tpEmit>1</tpEmit><mod>58</mod><serie>0</serie>
<nMDF>1</nMDF>
<cMDF>00001123</cMDF>
<cDV>4</cDV>
<modal>1</modal>
<dhEmi>2012-09-05T13:37:53</dhEmi>
<tpEmis>1</tpEmis>
<procEmi>0</procEmi>
<verProc>1.00</verProc>
<UFIni>MS</UFIni>
<UFFim>MS</UFFim>
<infMunCarrega>
<cMunCarrega>5002704</cMunCarrega>
<xMunCarrega>CAMPO GRANDE</xMunCarrega>
</infMunCarrega>
</ide><emit>
<CNPJ>00172031000127</CNPJ>
<IE>312886261</IE>
<xNome>NOME DA EMPRESA</xNome>
<enderEmit>
<xLgr>Rod BR 263</xLgr>
<nro>3550</nro>
<xBairro>JARDIM MONUMENTO</xBairro>
<cMun>5002704</cMun>
<xMun>CAMPO GRANDE</xMun>
<CEP>79072100</CEP>
<UF>MS</UF>
<fone>06732210171</fone>
</enderEmit>
</emit>
<infModal versaoModal="1.00">
<rodo>
<RNTRC>02852311</RNTRC>
<veicPrincipal>
<cInt>1</cInt>
<placa>HRA1467</placa>
<tara>13000</tara>
<capKG>10000</capKG>
<capM3>40</capM3>
<condutor>
<xNome>Arnaldo Luiz Estevao</xNome>
<CPF>12345678909</CPF>
</condutor>
</veicPrincipal>
</rodo>
</infModal>
<infDoc>
<infMunDescarga>
<cMunDescarga>5002704</cMunDescarga>
<xMunDescarga>CAMPO GRANDE</xMunDescarga>
<infCTe>
<chCTe>50220900472038000167570000000001041000001935</chCTe>
</infCTe>
</infMunDescarga>
</infDoc>
<tot>
<qCTe>1</qCTe>
<vCarga>100000</vCarga>
<cUnid>01</cUnid>
<qCarga>9800</qCarga>
</tot>
</infMDFe>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod><Reference URI="#MDFe501209004720380001675800000000000114">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature">
</Transform>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315">
</Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
<DigestValue>kHZt9HaiTnOBWqRSnT6LpmAWwOw=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>dc19iyASADSSADSDwfAp/BLBJVV6ob1SDSDSDSVcFK9t3yV/iBwgt1SASDSDSAAAA7O4AEM0Y/bk/8Dtr2Z7ZhnckJ/F9q0oZhONZDSSSAAASQacMX3HkgE78CRXL8kGzCMbRt+G6I9lZATUliQ1YrBrR5Ht44xTT1+0CmVUdZXVt9a1vWqe0U6Aq8+adIDNR0hgGYdKoP0A4
2s3MvrzjvBMIYRIXmprEjxk6u9vATtxDsy1IQkRgyqYZX9g7cbTkbADuJASsQi/zzCvwWBYOCQeeELpzf7lDf5XCzBHqIMKkKjxUUhhelCENmLPzLoPEdX1+ks8O3lIW+dxSgwBCw==</SignatureValue>
<KeyInfo>
<X509Data>

<X509Certificate>MIIH4DCCBcigAwIBAgIIHFr4nWMKggEwDQawjhghAvcNAQELBQAwTDELMAkGA1UEBhMCQlIxEzARBgNVBAASASASAQQQQmFza
WwxKDAmBgNVBAMTH1NFUkFTQSBDZXJ0aWZpY2Fkb3JhIERpZ2l0YWwgdjIwHhcNMTIwNjA0MTgwNjAwWhcNMTMwNjA0MTgwNjAwWjCCAQExCzAJ
BgNVBAYTAkJSMRMwEQYDVQQKEwpJQ1AtQnJhc2lsMRQwEgYDVQQLEwsoRU0gQlJBTkNPKTEYMBYGA1UECxMPMDAwMDAxMDAzMTk1ODU3MRQwEg
YDVQQLEwsoRU0gQlJBTkNPKTEUMBIGA1UECxMLKEVNIEJSQU5DTykxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNPKTEUM
BIGA1UECxMLKEVNIEJSQU5DTykxPzA9BgNVBAMTNlNFTkUgRU1QUkVTQSBERSBUUkFOU1BPUlRFIERFIENBUkdBUyBFIEVOQ09NRU5EQVMgTFREQTCCAS
IwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPiRQ+H+dRyX6oszguwWzQ4+1dmpl88E8f5JGFNccjtdFS45PvcXvZnGo6RPA71+R4r
/0PMWWaTqJncax23bCEEB+X1PmuOQEpHTlkE2tkYvkB27qr62a4DLKPWdwduRa3pg3kukHonTd57bHhUr25q2Wl78vYA96OiIptaoMYcZxQo93SBOZhjuhghPD9xbjvEFtNt
/E5vauZfjTOwq7Vxm+HdYIiC0hPXGrI2f1Zt+IgIojCbrd9wJ2opjS2qMjRuBGfPwukJS24eD7QydFeaVJNfKJFRnd5WADyRjm+0AbPvYv9z7Ooy7WClMKGdIRRSPVsS1sgIs
255lBwKxXkCAwEAAaOCAw0wggMJMIGXBggrBgEFBQcBAQSBijCBhzBHBggrBgEFBQcwAoY7aHR0cDovL3d3dy5jZXJ0aWZpY2Fkb2RpZ2l0YWwuY29tLmJyL2NhZ
GVpYXMvc2VyYXNhY2R2Mi5wN2IwPAYIKwYBBQUHMAGGMGh0dHA6Ly9vY3NwLmNlcnRpZmljYWRvZGlnaXRhbC5jb20uYnIvc2VyYXNhY2R2MjAfBgNVHSMEGDAW
gBSa4IMQ1yab6bragrKBzjka04dwhjBxBgNVHSAEajBoMGYGBmBMAQIBBjBcMFoGCCsGAQUFBwIBFk5odHRwOi8vcHVibGljYWNhby5jZXJ0aWZpY2Fkb2RpZ2l0YWw
uY29tLmJyL3JlcG9zaXRvcmlvL2RwYy9kZWNsYXJhY2FvLXNjZC5wZGYwgfAGA1UdHwSB6DCB5TBJoEegRYZDaHR0cDovL3d3dy5jZXJ0aWZpY2Fkb2RpZ2l0YWwuY29
tLmJyL3JlcG9zaXRvcmlvL2xjci9zZXJhc2FjZHYyLmNybDBDoEGgP4Y9aHR0cDovL2xjci5jZXJ0aWZpY2Fkb3MuY29tLmJyL3JlcG9zaXRvcmlvL2xjci9zZXJhc2FjZHYyLm
NybDBToFGgT4ZNaHR0cDovL3JlcG9zaXRvcmlvLmljcGJyYXNpbC5nb3YuYnIvbGNyL1NlcmFzYS9yZXBvc2l0b3Jpby9sY3Ivc2VyYXNhY2R2Mi5jcmwwDgYDVR0PAQH
/BAQDAgXgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBtgYDVR0RBIGuMIGrgQ9TRU5FVEBHTE9CTy5DT02gPgYFYEwBAwSgNRMzMTcwNDE5
NjYzOTEzNjgzMzEzNDEyMDM4ODgwOTkwMDAwMDAwMDAwMjI0ODAzU1NQIE1ToCQGBWBMAQMCoBsTGVNFUkdJTyBGRVJNQVUgREUgT0xJVkVJUkGgGQYFYE
wBAwOgEBMOMDA0NzIwMzgwMDAxNjegFwYFYEwBAwegDhMMMDAwMDAwMDAwMDAwMA0GCSqGSIb3DQEBCwUAA4ICAQByBqTahYUolByK0xHhEcz76OQE
iHIKGsz47ArD5HvvZF+lY9ddY93Zio4PB8Md2yOsqEHp+bsXHmyWrPMyA8MAFF++VFM0VbYSRNi7LTVABIspXZPSBxJHy7DYMgG+nqztqfmp7LLyPSDmdchN
/oa3r4egSaRJwBTQdssPgjwMlD5yDS6KCt5cWesMOd8+iNiujHLj29J0Otxw/LZVlkkb38C
/dlHVO0CeYtgVikRbJEIH91ZfbfKp7cMdIA5+sy0X2GWjFzRIJOITFf+xjMLNBvHSozM9wtpq7GWTaqVQOMzRBFFN4CaoOaQtbZlrsYL+5+uJHJgcGHyz+Lsa0KWynVzr
NFiMBzz9TCEy6tvpmqhwUCrC6EAm4IahcjfkcQuLQwmebTYejCrFMx3H9yZNYjL5zHkWXyScZ8GieDhi4GDnduwgztrV3dw6BhoWNHoINPJ8jUvZuBUyo9e
/oSmsxhkOH2oF6GgAphcR0WJqS7m1rB8kMFI
/mrt8AZF4VAZw3hHsWZdo6s6km8YImb0nog3+gKYb+3F5aBnxIA850HNbB3VZ3wIH97xD07nsIKA5KE9O6UtF4leF4MeBndVZUqmBtqkcuY6kTukXl
vGfYBeHeVDDgXqkoViulJZrAwVM8DWUsOr3qjHVRfwZxKB0CllGGQc7iHeXnt+d0D5O+Q==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</MDFe>


Página anterior    

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

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

Instalando Slackware 11.0 em um pendrive

Leitura recomendada

gGedit como IDE para COBOL

Incrementando seus scripts com dialog

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

Solução para provedores - Receber aviso no celular quando ocorrer perda de pacote, hosts parados ou pacotes duplicados

Conectando-se à Internet via ADSL com PPPoE no OpenBSD

  
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