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 に答える