PHP: Utilisation de simplexml à boucle à travers tous les niveaux d'un fichier XML

J'ai une fonction qui utilise simplexml pour revenir au premier niveau de nœuds dans un fichier XML et de les écrire dans une liste non ordonnée:

function printAssetMap() {
    $xml = simplexml_load_file(X_ASSETS);
    $assets = $xml->asset;
    $html = '<ul>'."\n";
    foreach ($assets as $asset) {
        $html .= '<li id="asset'.$asset->asset_assetid.'"><ins>&nbsp;</ins><a href="#">'.$asset->asset_name.' ['.$asset->asset_assetid.']</a></li>'."\n";
    }//end foreach
    $html .= '</ul>'."\n";
    return $html;
}//printAssetMap()

XML que je suis à l'aide, qui a des nœuds imbriqués:

<?xml version="1.0"?>
<assets>
  <asset>
    <asset_name>Home</asset_name>
    <asset_url>/home</asset_url>
    <asset_assetid>1</asset_assetid>
  </asset>
  <asset>
    <asset_name>Projects</asset_name>
    <asset_url>/projects</asset_url>
    <asset_assetid>2</asset_assetid>
    <asset>
      <asset_name>Portfolio</asset_name>
      <asset_url>/projects/portfolio</asset_url>
      <asset_assetid>3</asset_assetid>
    </asset>
    <asset>
      <asset_name>Current Jobs</asset_name>
      <asset_url>/projects/current-jobs</asset_url>
      <asset_assetid>4</asset_assetid>
    </asset>
  </asset>
</assets>

Maintenant, je commence à ajouter des nœuds enfants des nœuds que je suis en train de revenir. Est-il un moyen de faire une boucle par TOUS les niveaux de nœuds enfants dans un fichier xml, même si je ne sais pas combien de niveaux y sont, et de les ajouter à ma liste?

Quelques exemples XML s'il vous plaît.
Mis à jour le post avec XML.

OriginalL'auteur Nic Hubbard | 2010-01-24