2013-03-07 3 views
0

저는 개인 프로젝트로 xml 기반 수평 메뉴를 개발하려고 노력해 왔습니다.
하지만 나는 갇혀있는 것처럼 보입니다. .
XML 파일 (navigation.xml) 그래서SImpleXML XML 노드에서 문자열 값을 가져 오는 XPath

<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

감사에 문을 포장해야 할 수도 있습니다! 나는 당신이 쓴대로했는데, 단지 admin 페이지로 되돌아 간다. (만약 sscript가 올바르게 끝나면 헤더를 넣었다.) 그러나 링크/tag/text는 값을 바꾸면 업데이트되지 않는다. – Pr1nceJ4x

+0

당신이 말한 것은 원래의 질문의 범위를 벗어났습니다. 여러분의 "foreach"루프 전과 후에 오브젝트를보고 업데이트가되는지 확인하고, 다른 가능성은 xpath 변수 주위에 따옴표가 필요하다는 것입니다 (내 편집을 참조하십시오) – Scuzzy

+0

좋아, 내가 집에 돌아 왔을 때해볼 게. 편집에 관한 한 가지 질문 : 따옴표 앞에 백 슬래시를 사용하는 이유는 무엇입니까? – Pr1nceJ4x

관련 문제