Llevo varios días peleándome con un parseo XML y ya no sé qué más probar...
Si me pudieran aconsejar alguna opción les estaría agradecido.
Estoy consumiendo un WebService mediante cURL y todo funciona como debe.
Código PHP:
Ver original
'Content-Type: text/xml; charset=utf-8', 'SOAPAction: "'.$action.'"', ); /// OPCIONES cURL CURLOPT_URL => "$url", CURLOPT_POST => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_POSTFIELDS => $param, CURLOPT_RETURNTRANSFER => true, CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 10, CURLOPT_SSL_VERIFYPEER => false, ); /// OPCIONES cURL
Haciendo un var_dump($respuesta) el sistema me devuelve un string con el XML codificado a html tipo htmlentities():
Impresión en pantalla:
Código HTML:
Código fuente:Ver original
<Operaciones><Error><codigo>COD-00000</codigo><mensaje>Mensaje de error del sistema</mensaje></Error></Operaciones>
Código HTML:
Ver original
<Operaciones><Error><codigo>COD-00000</codigo><mensaje>Mensaje de error del sistema</mensaje></Error></Operaciones>
Este mismo WebService también lo tengo consumido mediante SOAP y no ha habido problema, lo cojo, lo parseo con simplexml_load_string($respuesta) y destripar el XML... pero en este caso no ocurre igual.
No hay forma pasarlo por foreach() para sacar las etiquetas del XML :/ algo que debería ser tan simple como:
Código PHP:
Ver original
$respuesta->Error->mensaje
No funciona...
He probado de todo:
Código PHP:
Ver original
new SimpleXMLElement($respuesta); // Prueba 1
He verificado si $respuesta es un objeto con is_object($respuesta)
Código PHP:
Ver original
echo "NO ES XML"; }else{echo "ES XML";}
Y, como esperaba, new SimpleXMLElement($respuesta) y simplexml_load_string($respuesta) dan como que son XML, pero no hay forma de recorrerlo como hago mediante SOAP.
A alguno de ustedes se le ocurre alguna solución o al menos saber el motivo de por qué no puedo trabajar la respuesta con foreach como hacía con el mismo webservice pero desde soap?
Gracias de antemano.
Un saludo.