Ver Mensaje Individual
  #13 (permalink)  
Antiguo 05/03/2014, 15:22
Avatar de emilio_viguri
emilio_viguri
 
Fecha de Ingreso: junio-2011
Ubicación: Mexico
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Problemas al leer XML con SIMPLEXML

Hola que tal estoy intentando interpretar un XML aparir de tu codicio pero sin éxito.

Intento subir un archivo xml y que este a su vez me muestre la informacion del xml.

Código PHP:
Ver original
  1. <html>
  2. <body>
  3. <form action="validaxml.php" method='post' enctype='multipart/form-data'>
  4.  Archivo <input type='file' name='arch' size='60'>
  5.  <INPUT TYPE="submit" VALUE="Valida" >
  6.  <br><br><hr>
  7. </FORM>
  8. <?php
  9. if (trim($_FILES['arch']['name'])=="") die("No archivo");
  10. if ($_FILES['arch']['error']==1 || $_FILES['arch']['size']==0) {
  11.     echo "<h1><red>NO SUBIO archivo, demasiado grande</red></h1>";
  12.     die();
  13. }
  14. $arch = $_FILES['arch']['tmp_name'];
  15. $texto = file_get_contents($arch);
  16. unlink($arch);
  17.  
  18. #$xml = simplexml_load_file('test.xml');
  19. #$xml = simplexml_load_file($texto);
  20. #echo $xml = $texto;
  21.  
  22. $ns = $xml->getNamespaces(true);
  23. $xml->registerXPathNamespace('c', $ns['cfdi']);
  24. $xml->registerXPathNamespace('t', $ns['tfd']);
  25.  
  26.  
  27. //EMPIEZO A LEER LA INFORMACION DEL CFDI E IMPRIMIRLA
  28. foreach ($xml->xpath('//cfdi:Comprobante') as $cfdiComprobante){
  29.       echo $cfdiComprobante['version'];
  30.       echo "<br />";
  31.       echo $cfdiComprobante['fecha'];
  32.       echo "<br />";
  33.       echo $cfdiComprobante['sello'];
  34.       echo "<br />";
  35.       echo $cfdiComprobante['total'];
  36.       echo "<br />";
  37.       echo $cfdiComprobante['subTotal'];
  38.       echo "<br />";
  39.       echo $cfdiComprobante['certificado'];
  40.       echo "<br />";
  41.       echo $cfdiComprobante['formaDePago'];
  42.       echo "<br />";
  43.       echo $cfdiComprobante['noCertificado'];
  44.       echo "<br />";
  45.       echo $cfdiComprobante['tipoDeComprobante'];
  46.       echo "<br />";
  47. }
  48. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Emisor') as $Emisor){
  49.    echo $Emisor['rfc'];
  50.    echo "<br />";
  51.    echo $Emisor['nombre'];
  52.    echo "<br />";
  53. }
  54. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Emisor//cfdi:DomicilioFiscal') as $DomicilioFiscal){
  55.    echo $DomicilioFiscal['pais'];
  56.    echo "<br />";
  57.    echo $DomicilioFiscal['calle'];
  58.    echo "<br />";
  59.    echo $DomicilioFiscal['estado'];
  60.    echo "<br />";
  61.    echo $DomicilioFiscal['colonia'];
  62.    echo "<br />";
  63.    echo $DomicilioFiscal['municipio'];
  64.    echo "<br />";
  65.    echo $DomicilioFiscal['noExterior'];
  66.    echo "<br />";
  67.    echo $DomicilioFiscal['codigoPostal'];
  68.    echo "<br />";
  69. }
  70. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Emisor//cfdi:ExpedidoEn') as $ExpedidoEn){
  71.    echo $ExpedidoEn['pais'];
  72.    echo "<br />";
  73.    echo $ExpedidoEn['calle'];
  74.    echo "<br />";
  75.    echo $ExpedidoEn['estado'];
  76.    echo "<br />";
  77.    echo $ExpedidoEn['colonia'];
  78.    echo "<br />";
  79.    echo $ExpedidoEn['noExterior'];
  80.    echo "<br />";
  81.    echo $ExpedidoEn['codigoPostal'];
  82.    echo "<br />";
  83. }
  84. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Receptor') as $Receptor){
  85.    echo $Receptor['rfc'];
  86.    echo "<br />";
  87.    echo $Receptor['nombre'];
  88.    echo "<br />";
  89. }
  90. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Receptor//cfdi:Domicilio') as $ReceptorDomicilio){
  91.    echo $ReceptorDomicilio['pais'];
  92.    echo "<br />";
  93.    echo $ReceptorDomicilio['calle'];
  94.    echo "<br />";
  95.    echo $ReceptorDomicilio['estado'];
  96.    echo "<br />";
  97.    echo $ReceptorDomicilio['colonia'];
  98.    echo "<br />";
  99.    echo $ReceptorDomicilio['municipio'];
  100.    echo "<br />";
  101.    echo $ReceptorDomicilio['noExterior'];
  102.    echo "<br />";
  103.    echo $ReceptorDomicilio['noInterior'];
  104.    echo "<br />";
  105.    echo $ReceptorDomicilio['codigoPostal'];
  106.    echo "<br />";
  107. }
  108. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Conceptos//cfdi:Concepto') as $Concepto){
  109.    echo "<br />";
  110.    echo $Concepto['unidad'];
  111.    echo "<br />";
  112.    echo $Concepto['importe'];
  113.    echo "<br />";
  114.    echo $Concepto['cantidad'];
  115.    echo "<br />";
  116.    echo $Concepto['descripcion'];
  117.    echo "<br />";
  118.    echo $Concepto['valorUnitario'];
  119.    echo "<br />";  
  120.    echo "<br />";
  121. }
  122. foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Impuestos//cfdi:Traslados//cfdi:Traslado') as $Traslado){
  123.    echo $Traslado['tasa'];
  124.    echo "<br />";
  125.    echo $Traslado['importe'];
  126.    echo "<br />";
  127.    echo $Traslado['impuesto'];
  128.    echo "<br />";  
  129.    echo "<br />";
  130. }
  131.  
  132. //ESTA ULTIMA PARTE ES LA QUE GENERABA EL ERROR
  133. foreach ($xml->xpath('//t:TimbreFiscalDigital') as $tfd) {
  134.    echo $tfd['selloCFD'];
  135.    echo "<br />";
  136.    echo $tfd['FechaTimbrado'];
  137.    echo "<br />";
  138.    echo $tfd['UUID'];
  139.    echo "<br />";
  140.    echo $tfd['noCertificadoSAT'];
  141.    echo "<br />";
  142.    echo $tfd['version'];
  143.    echo "<br />";
  144.    echo $tfd['selloSAT'];
  145. }
  146. ?>
  147. </body>
  148. </html>