private function xml2array($xmlObject, $out = array())
{
foreach ($xmlObject->attributes() as $attr => $val) {
$out['@attributes'][$attr] = (string) $val;
}
$hasChilds = false;
foreach ($xmlObject as $index => $node) {
$hasChilds = true;
$out[$index][] = $this->xml2array($node);
}
if (!$hasChilds && ($val = (string) $xmlObject)) {
$out['@value'] = $val;
}
foreach ($out as $key => $vals) {
if (is_array($vals) && count($vals) === 1 && array_key_exists(0, $vals)) {
$out[$key] = $vals[0];
}
}
return $out;
}