Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


CARTA PORTE V3.1

ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03


.

Leer ultimo nodo de tfd:TimbreFiscalDigital

La factura esta basada en XML, independiente del lenguaje de programacion todos debemos saber acerca de esta tecnologia
[[ FORO CERRADO DEBIDO A QUE YA LA INFORMACION YA NO ES VIGENTE ]]
Cerrado
ing_rod25
Mensajes: 1
Registrado: Mar Feb 21, 2012 1:14 pm

Leer ultimo nodo de tfd:TimbreFiscalDigital

Mensaje por ing_rod25 »

Hola buen dia
estoy trabajando en como leer el contenido de un XML en PHP
he utilizado el codigo encontrado en este post
http://www.validacfd.com/phpbb3/viewtopic.php?f=9&t=324
para leer la informacion contenida en el XML del CFDI
toda la informacion es leida corerctamente
solo que al acceder al ultimo nodo el que contiene la informacion del timbre fiscal digital
em regresa este error

Warning: SimpleXMLElement::xpath() [simplexmlelement.xpath]: Undefined namespace prefix in C:\xampp\htdocs\factura_electronica\XML.php on line 110

Warning: SimpleXMLElement::xpath() [simplexmlelement.xpath]: xmlXPathEval: evaluation failed in C:\xampp\htdocs\factura_electronica\XML.php on line 110


El codigo que utilizo es el siguiente:

Código: Seleccionar todo

<?
$link = mysql_connect("localhost", "root", "");
mysql_select_db("prueba");
$sql = "SELECT archivo FROM archivos WHERE id=1"; //EL XML ESTA GUARDADO EN UN CAMPO LONGBLOB LLAMADO archivo
$res = mysql_query($sql, $link);
$row = mysql_fetch_array($res);
$xml = simplexml_load_string($row["archivo"]);
//EMPIEZO A LEER LA INFORMACION DEL CFDI E IMPRIMIRLA
foreach ($xml->xpath('//cfdi:Comprobante') as $cfdiComprobante){
		echo $cfdiComprobante['version'];
		echo "<br />";
		echo $cfdiComprobante['fecha'];
		echo "<br />";
		echo $cfdiComprobante['sello'];
		echo "<br />";
		echo $cfdiComprobante['total'];
		echo "<br />";
		echo $cfdiComprobante['subTotal'];
		echo "<br />";
		echo $cfdiComprobante['certificado'];
		echo "<br />";
		echo $cfdiComprobante['formaDePago'];
		echo "<br />";
		echo $cfdiComprobante['noCertificado'];
		echo "<br />";
		echo $cfdiComprobante['tipoDeComprobante'];
		echo "<br />";
}
foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Emisor') as $Emisor){
	echo $Emisor['rfc'];
	echo "<br />";
	echo $Emisor['nombre'];
	echo "<br />";
}
foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Emisor//cfdi:DomicilioFiscal') as $DomicilioFiscal){
	echo $DomicilioFiscal['pais'];
	echo "<br />";
	echo $DomicilioFiscal['calle'];
	echo "<br />";
	echo $DomicilioFiscal['estado'];
	echo "<br />";
	echo $DomicilioFiscal['colonia'];
	echo "<br />";
	echo $DomicilioFiscal['municipio'];
	echo "<br />";
	echo $DomicilioFiscal['noExterior'];
	echo "<br />";
	echo $DomicilioFiscal['codigoPostal'];
	echo "<br />";
}
foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Emisor//cfdi:ExpedidoEn') as $ExpedidoEn){
	echo $ExpedidoEn['pais'];
	echo "<br />";
	echo $ExpedidoEn['calle'];
	echo "<br />";
	echo $ExpedidoEn['estado'];
	echo "<br />";
	echo $ExpedidoEn['colonia'];
	echo "<br />";
	echo $ExpedidoEn['noExterior'];
	echo "<br />";
	echo $ExpedidoEn['codigoPostal'];
	echo "<br />";
}
foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Receptor') as $Receptor){
	echo $Receptor['rfc'];
	echo "<br />";
	echo $Receptor['nombre'];
	echo "<br />";
}
foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Receptor//cfdi:Domicilio') as $ReceptorDomicilio){
	echo $ReceptorDomicilio['pais'];
	echo "<br />";
	echo $ReceptorDomicilio['calle'];
	echo "<br />";
	echo $ReceptorDomicilio['estado'];
	echo "<br />";
	echo $ReceptorDomicilio['colonia'];
	echo "<br />";
	echo $ReceptorDomicilio['municipio'];
	echo "<br />";
	echo $ReceptorDomicilio['noExterior'];
	echo "<br />";
	echo $ReceptorDomicilio['noInterior'];
	echo "<br />";
	echo $ReceptorDomicilio['codigoPostal'];
	echo "<br />";
}
foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Conceptos//cfdi:Concepto') as $Concepto){
	echo "<br />";
	echo $Concepto['unidad'];
	echo "<br />";
	echo $Concepto['importe'];
	echo "<br />";
	echo $Concepto['cantidad'];
	echo "<br />";
	echo $Concepto['descripcion'];
	echo "<br />";
	echo $Concepto['valorUnitario'];
	echo "<br />";	echo "<br />";
}
foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Impuestos//cfdi:Traslados//cfdi:Traslado') as $Traslado){
	echo $Traslado['tasa'];
	echo "<br />";
	echo $Traslado['importe'];
	echo "<br />";
	echo $Traslado['impuesto'];
	echo "<br />";
}
//ESTA ULTIMA PARTE ES LA QUE GENERA ERROR, AL PARECER NO ENCUENTRA EL NODO
foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Complemento//tfd:TimbreFiscalDigital') as $TimbreFiscalDigital){
	echo $TimbreFiscalDigital['selloCFD'];
	echo "<br />";
	echo $TimbreFiscalDigital['FechaTimbrado'];
	echo "<br />";
	echo $TimbreFiscalDigital['UUID'];
	echo "<br />";
	echo $TimbreFiscalDigital['noCertificadoSAT'];
	echo "<br />";
	echo $TimbreFiscalDigital['version'];
	echo "<br />";
	echo $TimbreFiscalDigital['selloSAT'];
	echo "<br />";
}
?>
Ya cheque la documentacion de PHP sobre simplexml pero no logro encontrar la forma de acceder a este ultimo nodo del XML, espero alguien ya haya trabajado en este lenguaje y con esta funcion y me diga que estoy implementando mal.
Cerrado