Digamos que tengo un poco de XML como estoForzar a un objeto SimpleXML en una cadena, independientemente del contexto
<channel>
<item>
<title>This is title 1</title>
</item>
</channel>
El código siguiente hace lo que yo quiero en la que se emite el título como una cadena
$xml = simplexml_load_string($xmlstring);
echo $xml->channel->item->title;
Aquí está mi problema. El código siguiente no trata el título como una cadena en ese contexto, así que termino con un objeto SimpleXML en la matriz en lugar de una cadena.
$foo = array($xml->channel->item->title);
He estado trabajando alrededor de él como esto
$foo = array(sprintf("%s",$xml->channel->item->title));
pero que parece fea.
¿Cuál es la mejor manera de forzar un objeto SimpleXML a una cadena, independientemente del contexto?
He presentado varias solicitudes de PHP para implementar algo similar a SOAP_SINGLE_ELEMENT_ARRAYS para esto, y animaría a otros a hacer lo mismo. SOAP_SINGLE_ELEMENT_ARRAYS fuerza a los elementos que/podrían/mantienen más de una cadena a analizarse siempre como solo cadenas. Por supuesto, como otros mencionaron, necesita saber lo que está recibiendo, pero una y otra vez me he encontrado con problemas con los servidores .NET SOAP que el WSDL (por defecto "mágico" de .NET) prototiparon cada cadena como mezclado o una variedad de cadenas. En lugar de current() 'ing o typecasting, el bit simplemente devuelve una cadena – conrad10781