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

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

Instalando Slackware 11.0 em um pendrive

Phperl, minha gambiarra para usar Perl como se fosse PHP

Leitura recomendada

Alguns recursos do BASH para você utilizar em seus programas

Fazendo o bash contar piadas

KeepAlive para conexão discada (ou não)

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

Script "apagador de linhas"

  
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