2011-12-13 11 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」と私はノード名=「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

? –

+0

グレッグ、あなたが問題を増やす場合は、あなたの質問のすべての編集に従うことは尋問者の責任ではありません。新しい質問がある場合は、それを投稿してください。 – NullUserException

答えて

3
$xml-xpath(PAGE/FILENAME) 

これは、いくつかの方法で壊れたが、これは、XPathの問題ではないPHPの文法一つです。


あなたはあなたの選択したファイル名のFILENAMEを含んPAGE要素(複数可)を取得したいです。 XPathでこれを行うには、predicateを使用できます。ここで重要なポイントは、あなたがしたいだけのページ要素(複数可)に結果をフィルタする述語を使用することである

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

ように見えるかもしれませんあなたのPHPコードで

PAGE[FILENAME="sub.php"] 

。あなたが立ち往生しているこれを行うのどの部分