[英]simplexml_load_file() - generate html menu out of xml
I'm trying to create a menu for a php-website out of a xml file. 我正在尝试从xml文件中为php网站创建菜单。 The XML-Structure is: XML结构是:
<?xml version="1.0" encoding="utf-8" ?>
<MenuRoot>
<Menu id="home" text="Startseite" url="../overview.php"></Menu>
<Menu id="system" text="System" url="../system.php">
<SubMenu id="system_sub1" text="Allgemein" url="../tba.php"></SubMenu>
<SubMenu id="system_sub2" text="Abmelden" url="../logout.php"></SubMenu>
</Menu>
</MenuRoot>
My PHP Code looks like - this does not work: 我的PHP代码如下所示-这不起作用:
if(file_exists('/var/www/content/menu.xml')) {
$xml = simplexml_load_file('/var/www/content/menu.xml');
foreach($xml->children() as $menu) {
echo '<li><a href="'.$menu->Menu['url'].'">'.$menu->Menu['text'].'</a>';
if(NULL !== $menu->children()):
echo '<ul>';
foreach($menu->children() as $submenu) {
echo '<li><a href="'.$submenu->SubMenu['url'].'">'.$submenu->SubMenu['text'].'</a></li>';
}
echo '</ul>';
endif;
echo '</li>';
}
}
else:
write_log(sprintf("menu.xml not found"));
endif;
I tried some different methods and did the basic way like, which works: 我尝试了一些不同的方法,并做了一些基本的方法,如:
if(file_exists('/var/www/content/menu.xml')) {
$xml = simplexml_load_file('/var/www/content/menu.xml');
echo '<li><a href="'.$xml->Menu[0]['url'].'">'.$xml->Menu[0]['text']..'</a>';
}
what am I doing wrong with my loops and accessing variables in my not working example? 在不工作的示例中,循环和访问变量有什么问题?
thanks! 谢谢!
When you access $menu->Menu['url']
, $menu
is already the Menu
node, and should be $menu['url']
. 当您访问$menu->Menu['url']
, $menu
已经是Menu
节点,应为$menu['url']
。
You can access to your menu directly using $xml->Menu
. 您可以使用$xml->Menu
直接访问$xml->Menu
。 Then you can use count()
to check the number of children: 然后,您可以使用count()
检查子级数:
$xml = simplexml_load_file('/var/www/content/menu.xml');
foreach($xml->Menu as $menu) {
echo '<li><a href="'.$menu['url'].'">'.$menu['text'].'</a>';
if (count($menu->SubMenu)) {
echo '<ul>';
foreach($menu->SubMenu as $submenu) {
echo '<li><a href="'.$submenu['url'].'">'.$submenu['text'].'</a></li>';
}
echo '</ul>';
}
echo '</li>';
}
Outputs: 输出:
<li>
<a href="../overview.php">Startseite</a>
</li>
<li>
<a href="../system.php">System</a>
<ul>
<li><a href="../tba.php">Allgemein</a></li>
<li><a href="../logout.php">Abmelden</a></li>
</ul>
</li>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.