0

我一直在尝试自己开发一个 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');  

有什么办法可以让它工作吗?提前致谢!

4

1 回答 1

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 ) {
于 2013-03-07T21:36:01.017 回答