Alex Rivera | Logout

Forcing a SimpleXML Object to a string, regardless of context

Asked 2009-01-06T13:42:48.733
81

Let's say I have some XML like this

<channel>
  <item>
    <title>This is title 1</title>
  </item>
</channel>

The code below does what I want in that it outputs the title as a string

$xml = simplexml_load_string($xmlstring);
echo $xml->channel->item->title;

Here's my problem. The code below doesn't treat the title as a string in that context so I end up with a SimpleXML object in the array instead of a string.

$foo = array( $xml->channel->item->title );

I've been working around it like this

$foo = array( sprintf("%s",$xml->channel->item->title) );

but that seems ugly.

What's the best way to force a SimpleXML object to a string, regardless of context?

Edit
Report

2 Answers

23

You can use the PHP function

strval();

This function returns the string values of the parameter passed to it.

answered 2009-02-04T20:06:57.537
2

To get XML data into a php array you do this:

// this gets all the outer levels into an associative php array
$header = array();
foreach($xml->children() as $child)
{
  $header[$child->getName()] = sprintf("%s", $child); 
}
echo "<pre>\n";
print_r($header);
echo "</pre>";

To get a childs child then just do this:

$data = array();
foreach($xml->data->children() as $child)
{
  $header[$child->getName()] = sprintf("%s", $child); 
}
echo "<pre>\n";
print_r($data);
echo "</pre>";

You can expand $xml-> through each level until you get what you want You can also put all the nodes into one array without the levels or just about any other way you want it.

answered 2011-07-11T21:27:17.870

Your Answer