0

こんにちは、xml 要素をフィルター処理し、次のように指定された ID を持つ 1 つの要素を表示します。

<?php

$url11= 'http://api.steampowered.com/ISteamUserStats/GetSchemaForGame/v0002/?key=XXXXXXXXXXXXXXXXXX&appid=240&l=german&format=xml';
$data11 = file_get_contents($url11);
$xml = simplexml_load_string($data11);

$joke ="WIN_BOMB_PLANT";

foreach($xml->availableGameStats->achievements->achievement as $key => $value) {
    if($value->name->__toString() != $joke) {
    ?>
<img src="<?php echo $value->icon->__toString(); ?>" border="0" height="64" width="64" >
        <?php
    }
}
?>  

ここにxmlドキュメントがあります:

-<game>
 <gameName>ValveTestApp260</gameName>
 <gameVersion>181</gameVersion>
   -<availableGameStats>
      -<achievements>
        -<achievement>
          <name>WIN_BOMB_PLANT</name>
          <displayName>Bombenleger</displayName>
          <icon>
          http://media.steampowered.com/steamcommunity/public/images/apps/240 
          /4711014791e4ae29408e8bc2fcae1ab61ca7c189.jpg
          </icon>
         </achievement>
        -<achievement>
          <name>BOMB_PLANT_LOW</name>
          <displayName>Boomala Boomala</displayName>
          <icon>
          http://media.steampowered.com/steamcommunity/public/images/apps/240
          /5f689c20656716f2a8bf67bd26f3f7846786bca5.jpg
          </icon>
         </achievement>
         <achievement>
         -Another things-
         </achievement>
       </achievements>
    </availableGameStats>
 </game>

しかし、今ではすべての要素が表示されます。この例のように: http://i.stack.imgur.com/BagDu.jpg

しかし、私はスクリプトがこの指定されたものを次のように表示するだけです: http://i.stack.imgur.com/X2Oph.png

誰でも私を助けることができますか?先に感謝..私の下手な英語または下手な英語で申し訳ありません...

4

1 に答える 1

0

反復するのではなく、xpath()必要なノードを選択するために使用できます。

$xml = simplexml_load_string($x); // assume XML in $x

$icon = $xml->xpath("//achievement[name='WIN_BOMB_PLANT']/icon")[0];

[0]の最後にline 2は が必要であることに注意してくださいPHP >= 5.4。古いバージョンを使用している場合は、更新するか、次の操作を行います。

$icon = $xml->xpath("//achievement[name='WIN_BOMB_PLANT']/icon");
$icon = $icon[0];

必要に応じて文字列にキャスト$iconします。

動作を確認してください: https://eval.in/157598

于 2014-06-01T20:53:25.887 に答える