attributes()) == 0 && count($xml->children()) == 0) {
    echo $prefix." => NULL\n";
  }
  foreach ($xml->attributes() as $name => $value) {
#    $a[$name] = ((isset($a[$name]))?$a[$name]+1:$a[$name]=0);
#    echo $prefix."['".$name."'][".$a[$name]."] => ".$value."\n";
    echo $prefix."['".$name."'] => ".$value."\n";
  }
  foreach ($xml->children() as $name => $value) {
    $n[$name] = ((isset($n[$name]))?$n[$name]+1:$n[$name]=0);
    recurse($value,$prefix."->".$name."[".$n[$name]."]");
  }
}

#echo "[ ".$xml->xp[0]->covertops[0]['xp']." ]\n\n";
#echo "[ ".$xml->badges[10]->tasks[1]['value']." ]\n\n";

function get_fav ($array,$xml,$isatt = False,$attribute = "xp",$fav = "N/A") {
  $n = -1;
  foreach ($array as $name) {
if ($attribute != "xp") {
  echo "->".$name[$attribute]."\n";
  print_r($name);
}
    if (($isatt)) {
      $x = (float) $xml[$name];
    } else {
      $x = (float) $xml[$attribute];
    }
    if ($n < $x) {
      $fav = $name;
      $n = $x;
    }
  }
  return $fav;
}

$classes = array(
  'covertops',
  'engineer',
  'fieldops',
  'medic',
  'soldier',
);

$hweap = array(
  'assaultrifle',
  'lacerator_scoped',
  'rocketlauncher',
  'sniperrifle',
  'railgun',
  'assaultrifle_scoped',
  'hyperblaster',
  'gpmg',
  'lacerator',
  'shotgun',
  'nailgun',
);

$lweap = array(
  'pistol_silenced',
  'machinepistol',
  'lightning_pistol',
  'pistol_akimbo',
  'machinepistol_silenced',
  'pistol',
  'blaster',
);

$melee = array(
  'knife',
  'spikes',
);

$explosive = array(
  'grenade_emp',
  'grenade_frag',
  'grenade_scrambler',
  'grenade_shrap',
  'he_charge',
  'flyerhive',
  'lacerator_grenade',
  'landmine_gdf',
  'landmine_strogg',
  'plasma_charge',
  'third_eye',
);

$explosive_array = array(
  'grenade_emp' => $xml->weapons->grenade_emp['xp'],
  'grenade_frag' => $xml->weapons->grenade_frag['xp'],
  'grenade_scrambler' => $xml->weapons->grenade_scrambler['xp'],
  'grenade_shrap' => $xml->weapons->grenade_shrap['xp'],
  'he_charge' => $xml->weapons->he_charge['xp'],
  'flyerhive' => $xml->weapons->flyerhive['xp'],
  'lacerator_grenade' => $xml->weapons->lacerator_grenade['xp'],
  'landmine_gdf' => $xml->weapons->landmine_gdf['xp'],
  'landmine_strogg' => $xml->weapons->landmine_strogg['xp'],
  'plasma_charge' => $xml->weapons->plasma_charge['xp'],
  'third_eye' => $xml->misc['third_eye_xp'],
);

$tools = array(
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  '',
);

$medals = array(
  'medal_high_xp',
  'medal_engineer',
  'medal_soldier',
  'medal_vehicle',
  'medal_weapons',
  'medal_kills',
  'medal_fieldops',
  'medal_teamkills',
  'medal_low_accuracy',
  'medal_high_accuracy',
  'medal_damage',
  'medal_battlesense',
  'medal_rewards',
  'medal_covertops',
  'medal_medic',
  'medal_low_xp',
);

$stat_rank = $xml->user_info['military_rank'];
$stat_place = $xml->user_info['rank'];
$stat_user = $xml->user_info['username'];
$stat_clan = $xml->user_info->clan['clan_name'];

$stat_update = strtotime($xml->user_info['updated_at']);

$stat_tks = (int) $xml->misc['total_team_kills'];
$stat_kills = (int) $xml->misc['total_kills'];
$stat_deaths = (int) $xml->misc['total_deaths'];
$stat_dmg = (float) $xml->misc['total_damage'];
$stat_shots = (int) $xml->misc['total_shots_fired'];
$stat_hits = (int) $xml->misc['total_shots_hit'];
$stat_xp = (float) $xml->misc['total_xp'];

$stat_hs = 0;
foreach ($xml->weapons->children() as $name => $att) {
  $stat_hs += $att['shots_hit_head'];
}

$stat_most_hs = (int) get_fav($xml->weapons->children(),$xml->weapons,False,'shots_hit_head');

printf("Username:      %s\n",$stat_user);
printf("Clan:          %s\n",$stat_clan);
printf("Military Rank: %s\n",$stat_rank);
printf("Player Rank:   %d\n",$stat_place);
echo "\n";
printf("Total XP:         %.2f\n",$stat_xp);
printf("Kills/Deaths/TKs: %d/%d/%d (%.2f)\n",$stat_kills,$stat_deaths,$stat_tks,($stat_kills/$stat_deaths));
printf("Shots Hit/Fired:  %d/%d (%.2f%%)\n",$stat_hits,$stat_shots,($stat_hits*100/$stat_shots));
printf("Most Headshots:   %s\n",$stat_most_hs);
printf("Total Headshots:  %d\n",$stat_hs);
echo "\n";

$fav_class = get_fav($classes,$xml->xp);
$fav_hweap = get_fav($hweap,$xml->weapons);
$fav_lweap = get_fav($lweap,$xml->weapons);
$fav_melee = get_fav($melee,$xml->weapons);
$fav_medal = get_fav($medals,$xml->misc,True);
$fav_expl  = get_fav($explosive,$explosive_array,True);

printf("Favorite class        : %s\n",$fav_class);
printf("Favorite heavy weapon : %s\n",$fav_hweap);
printf("Favorite light weapon : %s\n",$fav_lweap);
printf("Favorite melee weapon : %s\n",$fav_melee);
printf("Favorite explosive    : %s\n",$fav_expl);
printf("Most medals           : %s\n",$fav_medal);

//*
echo "\n";
foreach ($xml->misc->attributes() as $misc => $value) {
  if (preg_match('/^total.+/',$misc)) {
    echo "  '$misc',\n";
  }
}
echo "\n";
//*/

echo "\n";
recurse($xml);

echo "\n\n";

print_r($xml);
//var_dump($xml);

?>