Hola a todos,
A ver si alguno me puede resolver este misterio.
Aqui tengo la siquiente peticion:
Código:
$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();
Tras asegurarme de que __getLastResponse() devuelve un string (echo gettype($data)) llamo a la siguiente funcion loadXML:
Código:
Tras asegurarme de que __getLastResponse() devuelve un string (echo gettype($data)) llamo a la siguiente funcion loadXML:
Código:
function loadXML($data) {
$xml = @simplexml_load_string($data);
if (!is_object($xml))
throw new Exception('Error en la lectura del XML',1001);
return $xml;
}
Si ahora hago un print_r de XML->children() no me imprime nada.
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.