Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/06/2013, 11:12
Serenity
 
Fecha de Ingreso: marzo-2002
Mensajes: 299
Antigüedad: 22 años, 2 meses
Puntos: 1
Leer XML respuesta de WS Soap

Hola!!,

Desde ya gracias por su atención.

Hace tiempo estuve investigando sobre WS, me doy cuenta que sé muy muy poco, ya que la estructura con la trabajé era muy básica, de la siguiente forma:

Código XML:
Ver original
  1. <libros>
  2.    <libro>
  3.     <titulo>libro 1</titulo>
  4.     <editorial>Editorial</editorial>
  5.     <autores>
  6.        <nombre>Autor 1</nombre>
  7.        <nombre>Autor 2</nombre>
  8.     </autores>
  9.    <libro>
  10.    <libro>
  11.     <titulo>libro 1</titulo>
  12.     <editorial>Editorial</editorial>
  13.     <autores>
  14.        <nombre>Autor 1</nombre>
  15.        <nombre>Autor 2</nombre>
  16.     </autores>
  17.    <libro>
  18.  </libros>

Lo cual leía de la siguiente manera:

Código PHP:
Ver original
  1. $archivo=file_get_contents("archivo.xml");
  2. $xml = new SimpleXMLElement($archivo);  
  3.  foreach($xml->libros->libro as $item){
  4.      echo $item->titulo;
  5.  }

Ahora se me presenta una respuesta XML muy diferente que no he podido lograr leer.

La respuesta del WS es:

Código XML:
Ver original
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. - <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3. - <soap:Body>
  4. - <GenerarCFDIv32Response xmlns="http://www.theenginesoftware.com/">
  5. - <GenerarCFDIv32Result>
  6.   <OperacionExitosa>true</OperacionExitosa>
  7.   <ErrorDetallado />
  8.   <XML><?xml version="1.0" encoding="utf-8"?><cfdi:Comprobante xmlns:leyendasFisc="http://www.sat.gob.mx/leyendasFiscales" xmlns:donat="http://www.sat.gob.mx/donat" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:divisas="http://www.sat.gob.mx/divisas" xmlns:implocal="http://www.sat.gob.mx/implocal" version="3.2" folio="8" fecha="2013-05-30T12:24:42" sello="NK1+pzc0qu2GPyyrPiFK8RInjqkoHkyy3Q9IRUOrUsF2I+Cq7WblqBYlq71pdQkXSI5iL/bOn6u/rdB967yv9yXNjManVccF7sdYHJQpUqzp2wLIDVaN+gYJRKfJsplzhuD1xfbgAQNKxxn69Ana2tXX+dghiediAgD9zqBw8Vg=" formaDePago="Pago en una sola exhibición" noCertificado="20001000000100005867" certificado="MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NjcwDQYJKoZIhvc" subTotal="200.30" Moneda="MN" total="216.30" tipoDeComprobante="ingreso" metodoDePago="Efectivo" LugarExpedicion="Puebla, Puebla" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd" xmlns:cfdi="http://www.sat.gob.mx/cfd/3"><cfdi:Emisor rfc="DEMO141414FI1" nombre="Razon Social Dmo Luis"><cfdi:DomicilioFiscal calle="calle demo" noExterior="1" colonia="colonia demo" municipio="Puebla" estado="PUEBLA" pais="MEXICO" codigoPostal="72400" /><cfdi:RegimenFiscal Regimen="Regimen General de las Personas Fisicas" /><cfdi:RegimenFiscal Regimen="Regimen Intermedio" /></cfdi:Emisor><cfdi:Receptor rfc="XAXX010101000" nombre="Juanito Perez"><cfdi:Domicilio calle="Calle Feliz" noExterior="1200" colonia="Animas" localidad="Cordoba" referencia="Cerca del OXXO" municipio="Puebla" estado="PUEBLA" pais="MEXICO" codigoPostal="72000" /></cfdi:Receptor><cfdi:Conceptos><cfdi:Concepto cantidad="1.00" unidad="NO APLICA" descripcion="Mercancia Varios" valorUnitario="100.30" importe="100.30" /><cfdi:Concepto cantidad="10.00" unidad="Cajas" descripcion="Facturas !" valorUnitario="10.00" importe="100.00" /></cfdi:Conceptos><cfdi:Impuestos totalImpuestosRetenidos="0.00" totalImpuestosTrasladados="16.00"><cfdi:Traslados><cfdi:Traslado impuesto="IVA" tasa="16.00" importe="16.00" /></cfdi:Traslados></cfdi:Impuestos><cfdi:Complemento><donat:Donatarias version="1.1" noAutorizacion="1254D-569" fechaAutorizacion="2013-05-09" leyenda="Recibo de Donatarios" /><divisas:Divisas version="1.0" tipoOperacion="venta" /><leyendasFisc:LeyendasFiscales version="1.0"><leyendasFisc:Leyenda disposicionFiscal="Resolucion Fiscal 2013" norma="10" textoLeyenda="Efectos Fiscales al Pago" /></leyendasFisc:LeyendasFiscales><implocal:ImpuestosLocales version="1.0" TotaldeRetenciones="0.00" TotaldeTraslados="16.00" /><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/TimbreFiscalDigital/TimbreFiscalDigital.xsd" version="1.0" UUID="A492AB8B-7E57-7E57-7E57-C5DC1381E9B3" FechaTimbrado="2013-05-30T12:24:43" selloCFD="NK1+pzc0qu2GPyyrPiFK8RInjqkoHkyy3Q9IRUOrUsF2I+Cq7WblqBYlq71pdQkXSI5iL/bOn6u/rdB967yv9yXNjManVccF7sdYHJQpUqzp2wLIDVaN+gYJRKfJsplzhuD1xfbgAQNKxxn69Ana2tXX+dghiediAgD9zqBw8Vg=" noCertificadoSAT="00000000000001000" selloSAT="KJM5XPBc2p6coe29ycOtg1aJthb3aNUUCxIT68o+yoMhHCQZdmS+yr5p429GmGXHWQpQdOWKYQg1Alrc3ZOPyRsJkCcaIRlfIcw9XBxK3bctNe0TxAvNeYxBiavWxBX7aLeX3CcxvjN6RGvM8t5UMlIC4gcr9zURMIn4TgjJiUE=" /></cfdi:Complemento></cfdi:Comprobante></XML>
  9.   <CBB>Qk26wAAAAAAAADYAAAAoAAAAbwAAAG8AAAABACAAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAA////</CBB>
  10.   </GenerarCFDIv32Result>
  11.   </GenerarCFDIv32Response>
  12.   </soap:Body>
  13.   </soap:Envelope>

Lo que estoy haciendo es:

Código PHP:
Ver original
  1. $xmlar = simplexml_load_file('archivo.xml');
  2.   $ns = $xmlar->getNamespaces(true);
  3.   $xmlar->registerXPathNamespace('c', $ns['xml']);  
  4.  
  5.  foreach ($xmlar->xpath('//cfdi:Comprobante') as $cfdiComprobante){
  6.    echo $cfdiComprobante['fecha'];    
  7.   }

Esto no me funciona, me marca error y no logro llegar a los datos que necesito. Cuál es la forma correcta para llegar a los datos que necesito??.

Gracias por su ayuda