I have a function that uses simplexml to return the first level of nodes to an XML file and writes it to an unordered list:
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> </ins><a href="#">'.$asset->asset_name.' ['.$asset->asset_assetid.']</a></li>'."\n"; }
The XML I use has nested nodes:
<?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>
Now I'm starting to add the child nodes of the nodes that I am returning now. Is there a way to iterate over all levels of child nodes in an XML file, even if I donβt know how many levels there are, and add them to my list?
source share