我一直在尝试自己开发一个xml驱动的水平菜单作为私人项目..
但是因为我似乎被卡住了......大致......
XML文件(navigation.xml)
<navigation>
<menu>
<link>url</link>
<tag>hover help text</tag>
<text>Link text</text>
</menu
</navigation>
所以,我有一个变量来存储旧的链接/文本/标签名称,我想通过SimpleXML / XPath更新它..但它似乎不起作用..
PHP代码:
$load = SimpleXML_load_file('database/navigation.xml');
foreach( $load->xpath("menu[@link=". $link ." and @tag=". $tag ." and @text=". $text ."]") as $item ) {
$item->link = $link2; //link2->new link value, $link->old value
$item->tag = $tag2; //tag2->new tag value, $tag->old value
$item->text = $text2; //text2->new text value, $text->old value
}
$load->asXML('database/navigation.xml');
有什么方法可以让它发挥作用吗?提前谢谢!
答案 0 :(得分:1)
“@link”中的“@”符号用于引用元素的属性,而不是子元素。
foreach( $load->xpath("menu[link=". $link ." and tag=". $tag ." and text=". $text ."]") as $item ) {
您可能需要将语句包装在引号
中foreach( $load->xpath(sprintf("menu[link=\"%s\" and tag=\"%s\" and text=\"%s\"]",$link,$tag,$text) as $item ) {