Salve a tutti,
sono giorni (4!!!) che sto diventando pazzo per fare il parsing (ricorsivo) dell'xml qui sotto! Cio' che vorrei ottenere e' una lista con i vari tag html, ma proprio non mi riesce! Per ora ho sempre utilizzato la simplexml ma credo di essere andato nella direzione sbagliata... ho problemi infatti ad aprire e chiudere i tag in presenza di figli... Forse sto sbagliando approccio? Vorrei evitare xls... vi riporto il codice scritto sperando in un vostro preziosissimo aiuto
grazie infinitamente a tutti
cucca
Codice PHP:
foreach($mod as $k=>$v){
$xml = simplexml_load_file(MODULES_DIR."/".$k.'/menu.xml');
$result.=get_tree($xml,MODULES_URL."/".$k);
}
$result.="[/list]\n";
return $result;
}
function get_tree($xml,$baseurl,$sub=0){
foreach($xml->item as $children){
if (!$children->menu)
continue;
if($sub==1){
$result.="\t<ul>\n";
$descr=$children->description;
}else{
$descr=$children->description;
}
$result .= "\t[*]\n";
if (isset($children->link)){
$result .= "\t\t<a href=\"".$baseurl."/".$children->link."\"
title=\"".$descr."\">".$children->menu."</a>\n";
} else {
$result .= "\t\t<a href=\"#\" title=\"".$descr."\"
class=\"continua\">".$children->menu."</a>\n";
}
$result .= get_tree($children,$baseurl,1);
$result .= "\t\n";
if($sub==1)
$result.="\t[/list]\n";
}
return $result;
}
Codice PHP:
<?xml version='1.0' standalone='yes'?>
<menu_item>
<item>
<name>Prima Voce</name>
<menu>Prima Voce</menu>
<description>Prima Voce</description>
<link>#</link>
<item>
<name>Prima Sotto Voce</name>
<menu>Prima Sotto Voce</menu>
<description>Prima Sotto Voce</description>
<link>#</link>
</item>
<item>
<name>Seconda Sotto Voce</name>
<menu>Seconda Sotto Voce</menu>
<description>#</description>
<item>
<name>Prima SSotto Voce</name>
<menu>Prima SSotto Voce</menu>
<description>Prima SSotto Voce</description>
<link>#</link>
</item>
<item>
<name>Seconda SSotto Voce</name>
<menu>Seconda SSotto Voce</menu>
<description>Seconda SSotto Voce</description>
<link>#</link>
</item>
<item>
<name>Terza SSotto Voce</name>
<menu>Terza SSotto Voce</menu>
<description>Terza SSotto Voce</description>
<link>#</link>
</item>
</item>
<item>
<name>Terza Sotto Voce</name>
<menu>Terza Sotto Voce</menu>
<description>Terza Sotto Voce</description>
<link>#</link>
</item>
</item>
</menu_item>
cio' che vorrei ottenere:
Codice PHP:
<ul class="menuNavigazione">
[*][url="#"]Prima Voce[/url]
[*][url="#"]Seconda Voce[/url]
<ul>
[*][url="#"]Prima Sotto Voce[/url]
[*][url="#"]Seconda Sotto Voce[/url]
<ul>
[*][url="#"]Prima SSotto Voce[/url]
[*][url="#"]Seconda SSotto Voce[/url]
[*][url="#"]Terza SSotto Voce[/url]
[/list]
[*][url="#"]Terza Sotto Voce[/url]
[/list]
[*][url="#"]Terza Voce[/url]
<ul>
[*][url="#"]Prima Sotto Voce[/url]
[*][url="#"]Seconda Sotto Voce[/url]
[*][url="#"]Terza Sotto Voce[/url]
[/list]
[*][url="#"]Quarta Voce[/url]
[*][url="#"]Quinta Voce[/url][/list]