所以我已经阅读了有关使用simpleXML阅读XML的几个主题,但我遇到了我的具体案例的麻烦。
目前,我正在尝试从此来自Steam网络API网址的XML块中提取单个值
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE response>
<response>
<players>
<player>
<steamid>76561197996635228</steamid>
<communityvisibilitystate>3</communityvisibilitystate>
<profilestate>1</profilestate>
<personaname>P337</personaname>
<lastlogoff>1386990920</lastlogoff>
<commentpermission>1</commentpermission>
<profileurl>http://steamcommunity.com/id/P337/</profileurl>
<avatar>http://media.steampowered.com/steamcommunity/public/images/avatars/43/438f1b6217ee5600772cd1f9d978fbba999d8cc6.jpg</avatar>
<avatarmedium>http://media.steampowered.com/steamcommunity/public/images/avatars/43/438f1b6217ee5600772cd1f9d978fbba999d8cc6_medium.jpg</avatarmedium>
<avatarfull>http://media.steampowered.com/steamcommunity/public/images/avatars/43/438f1b6217ee5600772cd1f9d978fbba999d8cc6_full.jpg</avatarfull>
<personastate>0</personastate>
<primaryclanid>103582791431212131</primaryclanid>
<timecreated>1203124452</timecreated>
<personastateflags>0</personastateflags>
</player>
</players>
</response>
我可以使用以下PHP代码将所有这些输出到一个网页(代码来自另一个帖子,这非常有帮助
$url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=[STEAMAPIKEY]&steamids=[PROFILEID]&format=xml";
$get = file_get_contents($url);
$xml = simplexml_load_string($get);
header('Content-Type: text/xml');
die($xml->asXML());
然而,当我尝试将$ xml-&gt; asXML()更改为文档所说的另一个元素时,就像这样:
echo '<p>'.$xml->response->players->player->personastate.'</p>;
我收到错误消息,说没有返回数据。
出于示例的目的,我试图检索元素<personastate>
,该元素指示玩家是否在线。
答案 0 :(得分:1)
我将您在问题中发布的解决方案提取到此答案中(并修复了几个引用错误)。
如您所述,请勿使用SimpleXML
语法中的根元素:
INCORRECT echo '<p>'.$xml->response->players->player->personastate.'</p>';
CORRECT echo '<p>'.$xml->players->player->personastate.'</p>';