PHP: использование simplexml для обхода всех уровней файла XML

У меня есть функция, которая использует simplexml, чтобы вернуть первый уровень узлов в файле XML и записать его в неупорядоченный список:

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, который имеет вложенные узлы:

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

Теперь я начинаю добавлять дочерние узлы тех узлов, которые я сейчас возвращаю. Есть ли способ перебрать ВСЕ уровни дочерних узлов в файле XML, даже если я не знаю, сколько их уровней, и добавить их в мой список?

Ответы на вопрос(3)

Ваш ответ на вопрос