Variable $d comes from file_get_contents function to a URL.
$answer = @new SimpleXMLElement($d);
Below is output of the print_r($answer):
SimpleXMLElement Object
(
  [Amount] => 2698
  [Status] => OK
  [State] => FL
  [Country] => USA
)
How can I retrieve value of each element and add to an array? I can't figure it out.
In this simple case type casting will also work:
$my_array = (array)$answer
                        This should work:
$xml = simplexml_load_string($xmlstring);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
                        The $answer can already work as an array. You can do this if you want put it in a real array,
$array = array();
foreach($answer as $k => $v) {
  $array[$k] = $v;
}
                        I have a problem with this function because typecasting every XML child to an array can be problematic when the text is between CDATA tags.
I fixed this by checking if the result of the typecasting to an array is empty. If so typecast it to a string and you will get a proper result.
Here is my modified version with CDATA support:
function SimpleXML2ArrayWithCDATASupport($xml)
{   
    $array = (array)$xml;
    if (count($array) === 0) {
        return (string)$xml;
    }
    foreach ($array as $key => $value) {
        if (!is_object($value) || strpos(get_class($value), 'SimpleXML') === false) {
            continue;
        }
        $array[$key] = SimpleXML2ArrayWithCDATASupport($value);
    }
    return $array;
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With