2013-03-07 3 views
0

Я пытаюсь разработать горизонтальное меню, управляемое xml, самостоятельно, как частный проект.
Но, кажется, я застрял .. Грубо. .
XML File (navigation.xml)SImpleXML XPath получает строковое значение из узла XML

<navigation> 
    <menu> 
     <link>url</link> 
     <tag>hover help text</tag> 
     <text>Link text</text> 
    </menu 
</navigation> 

Итак, у меня есть переменная storring старую ссылку/текст/имя тега, и я хочу, чтобы обновить его через 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'); 

Есть ли способ заставить это работать? Заранее спасибо!

ответ

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) { 
+0

Спасибо за первый комм! Я сделал то, что вы написали, но он просто возвращается на страницу администратора (у меня был заголовок, если sscript правильно завершен), но ссылка/тег/текст не обновляется, если я изменяю его значение .. любые идеи? – Pr1nceJ4x

+0

То, что вы сказали, выходит за рамки исходного вопроса, то, что я предлагаю, смотрит на ваш объект до и после цикла «foreach», чтобы узнать, обновляется ли он, другая возможность заключается в том, что вам нужны кавычки вокруг ваших xpath vars (См. Мое редактирование) – Scuzzy

+0

Хорошо, я попробую, когда вернусь домой. Один вопрос относительно вашего редактирования: в чем причина использования обратных косых черт перед кавычками? – Pr1nceJ4x

 Смежные вопросы

  • Нет связанных вопросов^_^