Validador XML para a NFe em php

387 views
Skip to first unread message

Guilherme Moraes

unread,
May 19, 2009, 8:07:03 AM5/19/09
to list...@googlegroups.com, lista...@googlegroups.com
Pessoal,
Bom dia!

Alguém tem um exemplo de Validador para o XML da NFe em php? Encontrei um genérico, tentei adicionar os arquivos xsd que existem na PL_005a, mas não sei se o esquema está certo.

Estou tentando validar eles com este exemplo que montei, de validação, onde eu pego o arquivo XML, já assinado digitalmente, e submeto o mesmo a validação do XSD:

<?php
 if(!defined('sugarEntry'))define('sugarEntry', true);

libxml_use_internal_errors(true);

/* Cria um novo objeto da classe DomDocument */
$objDom = new DomDocument();

/* Carrega o arquivo XML */
$objDom->load("output/NFe.xml");

/* Tenta validar os dados utilizando o arquivo XSD */
if (!$objDom->schemaValidate("PL_005a/nfe_v1.10.xsd")) {

    $arrayAllErrors = libxml_get_errors();
    /* Cada elemento do array $arrayAllErrors será um objeto do tipo LibXmlError */
    print_r($arrayAllErrors);

} else {

    /* XML validado! */
    echo "XML obedece às regras definidas no arquivo XSD!";
}
?>

E a resposta que tenho é esta:

Array ( [0] => LibXMLError Object ( [level] => 2 [code] => 1845 [column] => 0 [message] => Element 'NFe': No matching global declaration available for the validation root. [file] => /usr/local/Zend/apache2/htdocs/projects/nfe/output/NFe.xml [line] => 1 ) [1] => LibXMLError Object ( [level] => 2 [code] => 1845 [column] => 0 [message] => Element 'NFe': No matching global declaration available for the validation root. [file] => /usr/local/Zend/apache2/htdocs/projects/nfe/output/NFe.xml [line] => 1 ) [2] => LibXMLError Object ( [level] => 2 [code] => 1845 [column] => 0 [message] => Element 'NFe': No matching global declaration available for the validation root. [file] => /usr/local/Zend/apache2/htdocs/projects/nfe/output/NFe.xml [line] => 1 ) )

Já no site da SEFAZ só volta falha no SCHEMA XML....

E vc fica desnorteado.

Agradeço a ajuda que tenho recebido do grupo!

Abs,
Guilherme Moraes
Lampada Global Services

Fernando Gustavo Flôres

unread,
May 19, 2009, 8:12:09 AM5/19/09
to list...@googlegroups.com, lista...@googlegroups.com
Verifica que namespace você está usando para validar o arquivo e utilize o último arquivo de revisão que está no site da SEFAZ: 005c (http://www.nfe.fazenda.gov.br/PORTAL/schemas.aspx)

Para testar a validade de seu arquivo xml e descobrir se o problema é o arquivo ou o seu código em php visita este validador on-line da SEFAZ-RS : http://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx

Atenciosamente,



2009/5/19 Guilherme Moraes <guism...@gmail.com>



--
Flôres, Fernando Gustavo
Analista Sênior GeneXus
DelSoft Sistemas
Linux User 384457
Rio do Sul/SC
http://www.delsoftsistemas.com.br

http://www.gustavoflores.com.br
{São Judas Tadeu, rogai por nós}
Reply all
Reply to author
Forward
0 new messages