Foros del Web » Programando para Internet » PHP »

Leer XML respuesta de WS Soap

Estas en el tema de Leer XML respuesta de WS Soap en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 07/06/2013, 11:12
 
Fecha de Ingreso: marzo-2002
Mensajes: 299
Antigüedad: 22 años, 1 mes
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
  #2 (permalink)  
Antiguo 07/06/2013, 14:12
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Leer XML respuesta de WS Soap

https://www.google.cl/search?q=php+z...ient=firefox-a
  #3 (permalink)  
Antiguo 07/06/2013, 15:37
 
Fecha de Ingreso: marzo-2002
Mensajes: 299
Antigüedad: 22 años, 1 mes
Puntos: 1
Respuesta: Leer XML respuesta de WS Soap

Gracias enlinea777,

He estado investigando y leyendo al respecto y he aplicado varias cosas pero ninguna me ha funcionado por eso es que acudí al foro, y en los ejemplos y en los temas sobre parseo de XML no he encontrado una estructura como esa.

Gracias por responder, alguien más que me pueda orientar. Desde ya gracias!!
  #4 (permalink)  
Antiguo 07/06/2013, 15:44
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Leer XML respuesta de WS Soap

pero porque quieres parsear eso si es un error¿?
  #5 (permalink)  
Antiguo 07/06/2013, 17:35
 
Fecha de Ingreso: marzo-2002
Mensajes: 299
Antigüedad: 22 años, 1 mes
Puntos: 1
Respuesta: Leer XML respuesta de WS Soap

mmm, no es un error creo, tiene el resultado de Operación Exitosa
<OperacionExitosa>true</OperacionExitosa> , después traé <ErrorDetallado /> pero es cierre no hay ningún error, devuelve toda la información que se necesita, pero he probado muchas cosas y nada me funciona, no sé si la estructura es correcta, tu así como ves la estructura si es una estructura válida?, como comenté al inicio, esa estructura el contenido de un archivo que me devuelve el WS. Consideras que si el válida la estructura??, para seguir buscando porque igual y eso no es correcto y nunca podré solucionarlo.

Gracias por tu atención y apoyo
  #6 (permalink)  
Antiguo 10/06/2013, 09:12
 
Fecha de Ingreso: marzo-2002
Mensajes: 299
Antigüedad: 22 años, 1 mes
Puntos: 1
Respuesta: Leer XML respuesta de WS Soap

Hola!!,

Alguien que me pueda ayudar, es correcta la estructura del XML?, porque necesito llegar al contenido de <XML>...<XML> toda la información está ahí, y por la respuesta de enlinea777 que dice que esto es un error ya no sé si es correcta está estructura.

Desde ya gracias por su atención y ayuda.

<?xml version="1.0" encoding="utf-8" ?>
- <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">
- <soap:Body>
- <GenerarCFDIv32Response xmlns="http://www.theenginesoftware.com/">
- <GenerarCFDIv32Result>
<OperacionExitosa>true</OperacionExitosa>
<ErrorDetallado />
<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+pzc0qu2GPyyrPiFK8RInjqkoHkyy3Q9IRUOrUsF 2I+Cq7WblqBYlq71pdQkXSI5iL/bOn6u/rdB967yv9yXNjManVccF7sdYHJQpUqzp2wLIDVaN+gYJRKfJsp lzhuD1xfbgAQNKxxn69Ana2tXX+dghiediAgD9zqBw8Vg=" formaDePago="Pago en una sola exhibición" noCertificado="20001000000100005867" certificado="MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxM DAwMDU4NjcwDQYJKoZIhvc" 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:ImpuestosL ocales 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+pzc0qu2GPyyrPiFK8RInjqkoHkyy3Q9IRUOr UsF2I+Cq7WblqBYlq71pdQkXSI5iL/bOn6u/rdB967yv9yXNjManVccF7sdYHJQpUqzp2wLIDVaN+gYJRKfJsp lzhuD1xfbgAQNKxxn69Ana2tXX+dghiediAgD9zqBw8Vg=" noCertificadoSAT="00000000000001000" selloSAT="KJM5XPBc2p6coe29ycOtg1aJthb3aNUUCxIT68o+ yoMhHCQZdmS+yr5p429GmGXHWQpQdOWKYQg1Alrc3ZOPyRsJkC caIRlfIcw9XBxK3bctNe0TxAvNeYxBiavWxBX7aLeX3CcxvjN6 RGvM8t5UMlIC4gcr9zURMIn4TgjJiUE=" /></cfdi:Complemento></cfdi:Comprobante></XML>
<CBB>Qk26wAAAAAAAADYAAAAoAAAAbwAAAG8AAAABACAAAAAAA AAAAADEDgAAxA4AAAAAAAAAAAAA////</CBB>
</GenerarCFDIv32Result>
</GenerarCFDIv32Response>
</soap:Body>
</soap:Envelope>
  #7 (permalink)  
Antiguo 10/06/2013, 09:29
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Leer XML respuesta de WS Soap

si quieres resolver esto necesitas flltrar la informacion

eliminando lo que esta antes del verdadero archivo

<?xml version="1.0" encoding="utf-8" ?>
- <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">
- <soap:Body>
- <GenerarCFDIv32Response xmlns="http://www.theenginesoftware.com/">
- <GenerarCFDIv32Result>
<OperacionExitosa>true</OperacionExitosa>
<ErrorDetallado />
<XML>

eso y despues lo que sobra al ultimo

<CBB>Qk26wAAAAAAAADYAAAAoAAAAbwAAAG8AAAABACAAAAA AA AAAAADEDgAAxA4AAAAAAAAAAAAA////</CBB>
</GenerarCFDIv32Result>
</GenerarCFDIv32Response>
</soap:Body>
</soap:Envelope>

para obtener lo que realmente importa

<?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+pzc0qu2GPyyrPiFK8RInjqkoHkyy3Q9IRUOrUsF 2I+Cq7WblqBYlq71pdQkXSI5iL/bOn6u/rdB967yv9yXNjManVccF7sdYHJQpUqzp2wLIDVaN+gYJRKfJsp lzhuD1xfbgAQNKxxn69Ana2tXX+dghiediAgD9zqBw8Vg=" formaDePago="Pago en una sola exhibición" noCertificado="20001000000100005867" certificado="MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxM DAwMDU4NjcwDQYJKoZIhvc" 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:ImpuestosL ocales 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+pzc0qu2GPyyrPiFK8RInjqkoHkyy3Q9IRUOr UsF2I+Cq7WblqBYlq71pdQkXSI5iL/bOn6u/rdB967yv9yXNjManVccF7sdYHJQpUqzp2wLIDVaN+gYJRKfJsp lzhuD1xfbgAQNKxxn69Ana2tXX+dghiediAgD9zqBw8Vg=" noCertificadoSAT="00000000000001000" selloSAT="KJM5XPBc2p6coe29ycOtg1aJthb3aNUUCxIT68o+ yoMhHCQZdmS+yr5p429GmGXHWQpQdOWKYQg1Alrc3ZOPyRsJkC caIRlfIcw9XBxK3bctNe0TxAvNeYxBiavWxBX7aLeX3CcxvjN6 RGvM8t5UMlIC4gcr9zURMIn4TgjJiUE=" /></cfdi:Complemento></cfdi:Comprobante>

si quieres que te ayude podrias contactarme por el gtalk

Etiquetas: respuesta, soap, xml
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 03:38.