A ver si alguno me puede resolver este misterio.
Aqui tengo la siquiente peticion:
Código:
Tras asegurarme de que __getLastResponse() devuelve un string (echo gettype($data)) llamo a la siguiente funcion loadXML:$objClient = new SoapClient($destino, array('trace' => true,'exceptions' => 0, 'encoding' => 'UTF-8')); $xml = '<cl:getClientList xmlns:hb="somexmlns"> <ClientListRequest sessionId="3335" xmlns="http://www.algunapagina.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.algunapagina.com/schemas/2005/06/messages ClientListRequest.xsd"> <Language>ENG</Language> <DateFrom date="'.$datein.'"/> <DateTo date="'.$dateout.'"/> <Office code="'.$office.'" type="SIMPLE"/> </ClientListRequest> </cl:getClientList>'; $soapvar = new SoapVar($xml, XSD_ANYXML); $objResponse = $objClient->__soapCall("getClientList", array($soapvar)); $data= $objClient->__getLastResponse();
Código:
Tras asegurarme de que __getLastResponse() devuelve un string (echo gettype($data)) llamo a la siguiente funcion loadXML:
Código:
Si ahora hago un print_r de XML->children() no me imprime nada.function loadXML($data) { $xml = @simplexml_load_string($data); if (!is_object($xml)) throw new Exception('Error en la lectura del XML',1001); return $xml; }
Código:
echo "<pre>"; // Pintamos los hijos print_r($XML->children()); echo "{" . $XML->Client->Name. "}" ; echo "</pre>";
En cambio si directamente asigno el resultado a la variable $data(copy/paste), es decir no uso $objClient->__getLastResponse(), sino que monto una respuesta completa(la misma que recibo de getLastResponse), me monta completamente el arbol de nodos y no entiendo el porque de una manera si y de la otra no cuando de las dos formas son String, y de una manera funciona y de la otra no(solo me imprime {}).
Espero la duda este correctamente explicada.
Saludos y gracias de antemano a quien me pueda ayudar.