Foros del Web » Programando para Internet » PHP »

Error al agregar datos a un array

Estas en el tema de Error al agregar datos a un array en el foro de PHP en Foros del Web. Hola amigos; La verdad es que no sé cómo leer determinada información de un XML, yo quisiera obtener como resultado "0.40" de la etiqueta: Código: ...
  #1 (permalink)  
Antiguo 13/05/2018, 00:34
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 15 años, 6 meses
Puntos: 3
Pregunta Error al agregar datos a un array

Hola amigos;

La verdad es que no sé cómo leer determinada información de un XML, yo quisiera obtener como resultado "0.40" de la etiqueta:

Código:
<cfdi:Impuestos TotalImpuestosRetenidos="0.40" TotalImpuestosTrasladados="3.20">
con XML de la siguiente estructura:

Código XML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3" Version="3.3" Folio="0118050004" Fecha="2018-05-10T19:37:53" FormaPago="03" NoCertificado="00001000000404310829" SubTotal="20.00" Descuento="0.00" Moneda="MXN" TipoCambio="1" Total="22.80" TipoDeComprobante="I" MetodoPago="PPD" LugarExpedicion="37450" Sello="sss" Certificado="sssss"><cfdi:Emisor Rfc="sssss" Nombre="sssss" RegimenFiscal="624"/><cfdi:Receptor Rfc="ssss" Nombre="sssss SA DE CV" UsoCFDI="G03"/><cfdi:Conceptos><cfdi:Concepto ClaveProdServ="78101800" NoIdentificacion="N/D" Cantidad="1" ClaveUnidad="E54" Unidad="SERVICIO" Descripcion="F-12256,CTE-CARLOS-LOMA BONIT" ValorUnitario="10.00" Importe="10.000000" Descuento="0.00"><cfdi:Impuestos><cfdi:Traslados><cfdi:Traslado Base="10.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="1.60"/></cfdi:Traslados><cfdi:Retenciones><cfdi:Retencion Base="10.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.040000" Importe="0.40"/></cfdi:Retenciones></cfdi:Impuestos></cfdi:Concepto><cfdi:Concepto ClaveProdServ="78101800" NoIdentificacion="N/D" Cantidad="1" ClaveUnidad="E54" Unidad="SERVICIO" Descripcion="SEGURO DE MERCANCIA" ValorUnitario="10.00" Importe="10.000000" Descuento="0.00"><cfdi:Impuestos><cfdi:Traslados><cfdi:Traslado Base="10.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="1.60"/></cfdi:Traslados><cfdi:Retenciones><cfdi:Retencion Base="10.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0" Importe="0.00"/></cfdi:Retenciones></cfdi:Impuestos></cfdi:Concepto></cfdi:Conceptos><cfdi:Impuestos TotalImpuestosRetenidos="0.40" TotalImpuestosTrasladados="3.20"><cfdi:Retenciones><cfdi:Retencion Impuesto="002" Importe="0.40"/></cfdi:Retenciones><cfdi:Traslados><cfdi:Traslado Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="3.20"/></cfdi:Traslados></cfdi:Impuestos><cfdi:Complemento><tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd" Version="1.1" SelloCFD="sssssssssss" NoCertificadoSAT="00001000000405332712" RfcProvCertif="FIN1203015JA" UUID="D2DD7894-BC77-4428-A2B5-4B16B6418D8F" FechaTimbrado="2018-05-10T18:37:55" SelloSAT="sssssssssss"/></cfdi:Complemento></cfdi:Comprobante>

He intentado con:

Código PHP:
$DOM = new DOMDocument('1.0''utf-8');
        
$DOM->preserveWhiteSpace FALSE;
        
$DOM->loadXML($xml);


$params $DOM->getElementsByTagName('Retencion');
        foreach (
$params as $param) {
            
$TotRetencion =  $TotRetencion $param->getAttribute('Importe');

            if (
$param->getAttribute('Impuesto')=="002"){ // IVA RET
                
$ImporteTotalIVAR  $ImporteTotalIVAR $param->getAttribute('Importe');
                
$ultimoImporteIVAR $param->getAttribute('Importe');
            }
        }
        
        
$ImporteTotalIVAR  $ImporteTotalIVAR $ultimoImporteIVAR
Pero no funciona


¿Alguien que pudiera apoyarme a extraer exclusivamente el valor de "TotalImpuestosRetenidos="0.40"?

Cabe mencionar que a veces no existe esta etiqueta, por lo que si no existe debería decirme 0.00
  #2 (permalink)  
Antiguo 16/05/2018, 14:59
Avatar de Trublux  
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 355
Antigüedad: 13 años, 5 meses
Puntos: 48
Respuesta: Error al agregar datos a un array

Lo he probado y la variable $ImporteTotalIVAR sí tiene el valor 0.4
__________________
eZ Publish Developer Basic Legacy
eZ Publish Developer Basics (4.4)
Alojamientos rurales en España

Etiquetas: funcion, nombre
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:51.