2011-12-13 164 views
-3

好夥計我使用xml來存儲動態網站的頁面信息。我需要找出一種方法來獲取一個變量(文件名)並拉動相關節點並解析該信息。所以基本上這裏是我的XML結構...SimpleXML和PHP(XPATH)

<SITE> 

<PAGE> 
<FILENAME>sub.php</FILENAME> 
<DESCRIPTION>this is an example sub page</DESCRIPTION> 
<TITLE>NOH Sub page</TITLE> 
<PARENTS> 
<PARENT>What is NOH</PARENT> 
</PARENTS> 
</PAGE> 

<PAGE> 
<FILENAME>about.php</FILENAME> 
<DESCRIPTION>description description description </DESCRIPTION> 
<TITLE>About Us</TITLE> 
<PARENTS> 
<PARENT>Company</PARENT> 
<PARENT>People</PARENT> 
</PARENTS> 
</PAGE> 

</SITE> 

有沒有使用的SimpleXML和PHP可以帶可變說的方式..「sub.php」,說我希望節點其中filename =「sub.php ',然後能夠解析該節點(頁面)以獲取所需的信息。謝謝!

更新,在這裏我很困惑是... 我有這個功能

function getPage($pagePath){ 

$file = "includes/sitestructure.xml"; 
$xml = simplexml_load_file($file); 
return print_r($xml-xpath(PAGE/FILENAME)); 
} 

,但我的XPath不工作,我不知道怎麼弄邏輯我需要的信息。 。我知道如何通常用PHP解析XML,但不知道如何通過將特定節點與變量進行比較來解析它。

+1

你堅持哪一部分這樣做的? – 2011-12-13 22:07:01

回答

3
$xml-xpath(PAGE/FILENAME) 

這是在幾個方面打破,但這是一個XPath問題不是一個PHP語法之一。


你想要得到的PAGE元素(一個或多個)包含您所選擇的文件名的FILENAME。要在XPath中執行此操作,可以使用predicate

PAGE[FILENAME="sub.php"] 

在你的PHP代碼可能看起來像

$pages = $xml->xpath('PAGE[FILENAME="sub.php"]'); 
$first_page = $pages[0]; 
echo $first_page->TITLE; // NOH Sub page 

這裏最重要的一點,是利用謂詞的結果進行過濾,只說你想要的頁面元素(一個或多個)。