PHP: Używanie simplexml do przechodzenia przez wszystkie poziomy pliku XML

Mam funkcję, która używa simplexml, aby zwrócić pierwszy poziom węzłów w pliku XML i zapisać go na liście nieuporządkowanej:

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, którego używam, który ma zagnieżdżone węzły:

<?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>

Teraz zaczynam dodawać węzły potomne węzłów, które obecnie zwracam. Czy istnieje sposób na przechodzenie przez WSZYSTKIE poziomy węzłów potomnych w pliku xml, nawet jeśli nie wiem, ile jest poziomów, i dodam je do mojej listy?

questionAnswers(3)

yourAnswerToTheQuestion