Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/06/2012, 12:53
Avatar de ing_efrain
ing_efrain
 
Fecha de Ingreso: junio-2012
Mensajes: 1
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Problemas al leer XML con SIMPLEXML

Gracias por todo, me ha servido mucho.
Quisiera dejar el código completo como ya funciona para aquellos a quienes les interese.


Código PHP:
Ver original
  1. <?php
  2. $xml = simplexml_load_file('test.xml');
  3. $ns = $xml->getNamespaces(true);
  4. $xml->registerXPathNamespace('c', $ns['cfdi']);
  5. $xml->registerXPathNamespace('t', $ns['tfd']);
  6.  
  7.  
  8. //EMPIEZO A LEER LA INFORMACION DEL CFDI E IMPRIMIRLA
  9. foreach ($xml->xpath('//cfdi:Comprobante') as $cfdiComprobante){
  10.       echo $cfdiComprobante['version'];
  11.       echo "<br />";
  12.       echo $cfdiComprobante['fecha'];
  13.       echo "<br />";
  14.       echo $cfdiComprobante['sello'];
  15.       echo "<br />";
  16.       echo $cfdiComprobante['total'];
  17.       echo "<br />";
  18.       echo $cfdiComprobante['subTotal'];
  19.       echo "<br />";
  20.       echo $cfdiComprobante['certificado'];
  21.       echo "<br />";
  22.       echo $cfdiComprobante['formaDePago'];
  23.       echo "<br />";
  24.       echo $cfdiComprobante['noCertificado'];
  25.       echo "<br />";
  26.       echo $cfdiComprobante['tipoDeComprobante'];
  27.       echo "<br />";
  28. }
  29. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Emisor') as $Emisor){
  30.    echo $Emisor['rfc'];
  31.    echo "<br />";
  32.    echo $Emisor['nombre'];
  33.    echo "<br />";
  34. }
  35. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Emisor//cfdi:DomicilioFiscal') as $DomicilioFiscal){
  36.    echo $DomicilioFiscal['pais'];
  37.    echo "<br />";
  38.    echo $DomicilioFiscal['calle'];
  39.    echo "<br />";
  40.    echo $DomicilioFiscal['estado'];
  41.    echo "<br />";
  42.    echo $DomicilioFiscal['colonia'];
  43.    echo "<br />";
  44.    echo $DomicilioFiscal['municipio'];
  45.    echo "<br />";
  46.    echo $DomicilioFiscal['noExterior'];
  47.    echo "<br />";
  48.    echo $DomicilioFiscal['codigoPostal'];
  49.    echo "<br />";
  50. }
  51. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Emisor//cfdi:ExpedidoEn') as $ExpedidoEn){
  52.    echo $ExpedidoEn['pais'];
  53.    echo "<br />";
  54.    echo $ExpedidoEn['calle'];
  55.    echo "<br />";
  56.    echo $ExpedidoEn['estado'];
  57.    echo "<br />";
  58.    echo $ExpedidoEn['colonia'];
  59.    echo "<br />";
  60.    echo $ExpedidoEn['noExterior'];
  61.    echo "<br />";
  62.    echo $ExpedidoEn['codigoPostal'];
  63.    echo "<br />";
  64. }
  65. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Receptor') as $Receptor){
  66.    echo $Receptor['rfc'];
  67.    echo "<br />";
  68.    echo $Receptor['nombre'];
  69.    echo "<br />";
  70. }
  71. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Receptor//cfdi:Domicilio') as $ReceptorDomicilio){
  72.    echo $ReceptorDomicilio['pais'];
  73.    echo "<br />";
  74.    echo $ReceptorDomicilio['calle'];
  75.    echo "<br />";
  76.    echo $ReceptorDomicilio['estado'];
  77.    echo "<br />";
  78.    echo $ReceptorDomicilio['colonia'];
  79.    echo "<br />";
  80.    echo $ReceptorDomicilio['municipio'];
  81.    echo "<br />";
  82.    echo $ReceptorDomicilio['noExterior'];
  83.    echo "<br />";
  84.    echo $ReceptorDomicilio['noInterior'];
  85.    echo "<br />";
  86.    echo $ReceptorDomicilio['codigoPostal'];
  87.    echo "<br />";
  88. }
  89. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Conceptos//cfdi:Concepto') as $Concepto){
  90.    echo "<br />";
  91.    echo $Concepto['unidad'];
  92.    echo "<br />";
  93.    echo $Concepto['importe'];
  94.    echo "<br />";
  95.    echo $Concepto['cantidad'];
  96.    echo "<br />";
  97.    echo $Concepto['descripcion'];
  98.    echo "<br />";
  99.    echo $Concepto['valorUnitario'];
  100.    echo "<br />";  
  101.    echo "<br />";
  102. }
  103. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Impuestos//cfdi:Traslados//cfdi:Traslado') as $Traslado){
  104.    echo $Traslado['tasa'];
  105.    echo "<br />";
  106.    echo $Traslado['importe'];
  107.    echo "<br />";
  108.    echo $Traslado['impuesto'];
  109.    echo "<br />";  
  110.    echo "<br />";
  111. }
  112.  
  113. //ESTA ULTIMA PARTE ES LA QUE GENERABA EL ERROR
  114. foreach ($xml->xpath('//t:TimbreFiscalDigital') as $tfd) {
  115.    echo $tfd['selloCFD'];
  116.    echo "<br />";
  117.    echo $tfd['FechaTimbrado'];
  118.    echo "<br />";
  119.    echo $tfd['UUID'];
  120.    echo "<br />";
  121.    echo $tfd['noCertificadoSAT'];
  122.    echo "<br />";
  123.    echo $tfd['version'];
  124.    echo "<br />";
  125.    echo $tfd['selloSAT'];
  126. }
  127. ?>