beingalex Posted March 31, 2010 Share Posted March 31, 2010 I am trying to create a valid unordered list from an xml document. The XML could have unlimited nested nodes so I have created a recusive function (below). However, the function is creating <ul> and <li> tags where it shouldn't, ie. there are two at the start. It will be easier to understand the problem if I provide to you the code... The XML: <?xml version="1.0" encoding="UTF-8"?> <navigation> <links> <link>Main Link 1</link> <links> <link href="#">Main Link 1 - Sub Link 1</link> <link href="#">Main Link 1 - Sub Link 2</link> <link href="#">Main Link 1 - Sub Link 3</link> </links> </links> <links> <link href="#">Main Link 2</link> <links> <link href="#">Main Link 2 - Sub Link 1</link> <link href="#">Main Link 2 - Sub Link 2</link> </links> </links> <links> <link href="#">Main Link 3</link> <links> <link href="#">Main Link 3 - Sub Link 1</link> <link href="#">Main Link 3 - Sub Link 2</link> <link href="#">Main Link 3 - Sub Link 3</link> </links> </links> <links> <link href="#">Main Link 4</link> <links> <link href="#">Main Link 4 > Sub Link 1</link> <link href="#">Main Link 4 > Sub Link 2</link> <links> <link href="#">Main Link 4 - Sub Link 2 - Sub Sub Link 1</link> <link href="#">Main Link 4 - Sub Link 2 - Sub Sub Link 1</link> </links> <link href="#">Main Link 4 - Sub Link 3</link> </links> </links> <link href="#">Main Link 5</link> <link href="#">Main Link 6</link> </navigation> The function: $xml = new SimpleXMLElement(file_get_contents($xmlfile)); buildNav($xml); function buildNav($xml) { echo "<ul>"; foreach($xml AS $links) { echo "<li>" . $links; if (count($links->children()) > 0) { buildNav($links->children()); } echo "</li>"; } echo "</ul>"; } The result should be: <ul> <li>Main Link 1 <ul> <li>Main Link 1 - Sub Link 1</li> <li>Main Link 1 - Sub Link 2</li> <li>Main Link 1 - Sub Link 3</li> </ul> </li> <li>Main Link 2 <ul> <li>Main Link 2 - Sub Link 1</li> <li>Main Link 2 - Sub Link 2</li> </ul> </li> etc..etc.. <li>Main Link 5</li> <li>Main Link 6</li> </ul> Actual result... <ul> <li> <ul> <li>Main Link 1</li> <li> <ul> <li>Main Link 1 - Sub Link 1</li> <li>Main Link 1 - Sub Link 2</li> etc..etc.. Notice the extra ul and li tags. If anyone has any idea why this is happening or how to fix it then your help is MUCH appreciated. Thanks in advance, - Alex Link to comment https://forums.phpfreaks.com/topic/197078-xml-to-unordered-list-using-simplexml/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.