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.853 ]
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
Phperl, minha gambiarra para usar Perl como se fosse PHP
Autenticação mútua SSL em servidores de NF-e e CT-e
Instalando Slackware 11.0 em um pendrive
Impressão remota via WEB
Leitura recomendada
Brincando com vetores - complemento
NetProfiler - Um solução para quem passeia por várias redes
Fazendo backup do seu MySQL com API do Dropbox
Xdialog - Programação Gráfica Útil
Script "apagador de linhas"
Comentários
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?
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
Mensagem
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
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 :)
Mensagem
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 :)
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á.
Mensagem
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á.
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" >
Mensagem
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
Enviar