2012-08-05 26 views
2

搜索XML我有一個返回像一個XML文件中的以下內容:的價值

<games> 
<game> 
    <appID>1234</appID> 
    <name>game 1</name> 
</game> 
<game> 
    <appID>5678</appID> 
    <name>game 2</name> 
</game> 
<game> 
    <appID>9123</appID> 
    <name>game 3</name> 
</game> 
</games> 

我想我的代碼來獲取URL參數GID至$ GID,搜索XML對於應用標識,然後指定$遊戲名稱,如果它匹配在XML中。目前只有在第一個遊戲被點擊時纔會有效。它似乎沒有搜索過去的第一個<遊戲>。

$gid = (int) $_GET['gid']; 
$gamespage = simplexml_load_file("http://gamepage.com/games?xml=1"); 
$gamelist = $gamespage->games;  
if ($gid == $gamelist->game->appID) { 
$appid = $gamelist->game->appID; 
$gamename = $gamelist->game->name; } 
else { 
echo "No game stats. <br />"; } 

回答

8

你可以做到這一點很容易使用XPath query

$xpath = $gamespage->xpath('/games/game[appID = ' . $gid . ']/name'); 
if ($xpath) { 
    $appid = $gid; 
    $gamename = (string) $xpath[0]; 
} else { 
    echo "No game stats. <br />"; 
} 
+0

名心不是的appid的一個子集,雖然 – user1568736 2012-08-05 01:25:01

+0

@ user1568736:如果您在查詢再看看,你是通知,它的查詢一個''節點,其兄弟''具有'$ gid'的值。 – 2012-08-05 01:26:22

+0

致命錯誤:調用非對象的成員函數xpath() – user1568736 2012-08-05 01:30:44