Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从Steam API打印特定的XML字段_Php_Xml_Api_Simplexml_Steam - Fatal编程技术网

Php 从Steam API打印特定的XML字段

Php 从Steam API打印特定的XML字段,php,xml,api,simplexml,steam,Php,Xml,Api,Simplexml,Steam,我正在尝试创建一个简单的函数,该函数将接受提交的64位steamid,并使用SteamAPI吐回信息。我选择使用XML而不是JSON,因为我在过去使用过一些XML。我对php还是很陌生 获取数据和打印工作正常,但我在打印特定字段时遇到问题 $steamid = $_SESSION['steamid']; $url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=X&steamids=$stea

我正在尝试创建一个简单的函数,该函数将接受提交的64位steamid,并使用SteamAPI吐回信息。我选择使用XML而不是JSON,因为我在过去使用过一些XML。我对php还是很陌生

获取数据和打印工作正常,但我在打印特定字段时遇到问题

$steamid = $_SESSION['steamid'];
$url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=X&steamids=$steamid&format=xml";
$data = file_get_contents($url);
$xml = simplexml_load_string($data);

print var_dump($xml);

//trying to display the "personaname" but doing it wrong
echo $xml->response->players->player->personaname;
请注意,在这里发布之前,已删除我的API密钥。这是一个使用“print var_dump($xml)”返回的示例

在用户hakre的帮助下,我打印出了原始XML,如下所示:

<response>
<players>
<player>
<steamid>76561198001776632</steamid>
<communityvisibilitystate>3</communityvisibilitystate>
<profilestate>1</profilestate>
<personaname>johan</personaname>
<lastlogoff>1368300096</lastlogoff>
<commentpermission>1</commentpermission>
<profileurl>http://steamcommunity.com/id/mrbbqlol/</profileurl>
<avatar>
http://media.steampowered.com/steamcommunity/public/images/avatars/b7/b765fa514b9c44376e84754acb12e66821d4564c.jpg
</avatar>
<avatarmedium>
http://media.steampowered.com/steamcommunity/public/images/avatars/b7/b765fa514b9c44376e84754acb12e66821d4564c_medium.jpg
</avatarmedium>
<avatarfull>
http://media.steampowered.com/steamcommunity/public/images/avatars/b7/b765fa514b9c44376e84754acb12e66821d4564c_full.jpg
</avatarfull>
<personastate>1</personastate>
<primaryclanid>103582791431859033</primaryclanid>
<timecreated>1223663039</timecreated>
<loccountrycode>SE</loccountrycode>
<locstatecode>26</locstatecode>
<loccityid>43754</loccityid>
</player>
</players>
</response>

76561198001776632
3.
1.
约翰
1368300096
1.
http://steamcommunity.com/id/mrbbqlol/
http://media.steampowered.com/steamcommunity/public/images/avatars/b7/b765fa514b9c44376e84754acb12e66821d4564c.jpg
http://media.steampowered.com/steamcommunity/public/images/avatars/b7/b765fa514b9c44376e84754acb12e66821d4564c_medium.jpg
http://media.steampowered.com/steamcommunity/public/images/avatars/b7/b765fa514b9c44376e84754acb12e66821d4564c_full.jpg
1.
103582791431859033
1223663039
东南方
26
43754
我已经研究过其他类似的问题,但我无法解决我的问题。我应该如何解析和回显特定字段?simplexmlelement是否可以用于此目的

谢谢

simplexmlelement是否可以用于此目的

是的,它可以,而且你已经在使用它了。然而,有问题的部分是,您需要首先理解XML结构

如果您正在浏览器中调试,以下是simplexml的快速帮助:

$steamid = $_SESSION['steamid'];
$url     = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=X&steamids=$steamid&format=xml";
$data    = file_get_contents($url);
$xml     = simplexml_load_string($data);

header('Content-Type: text/xml');
die($xml->asXML());
第一部分实际上就是您的代码,我只是在下面添加了两行,逐字逐句地向浏览器输出XML,告诉它它是XML。然后,您的浏览器将按原样显示XML(通常格式良好,您可以打开/关闭部分,打印精美,并使用不同颜色突出显示语法,例如Chromium)


您可以访问中概述的元素。您不能太信任SimpleXMLElements上的
print\r
var\u dump
,因为它们没有显示整个XML(子)树。

谢谢,使用这两行代码,我可以查看原始XML文件和结构。通过查看“SimpleXML基本用法”中的示例,我得出结论,我应该使用“echo$xml->response->players->player->personame;”,但这似乎没有给出任何结果。我尝试使用播放器[0]而不是仅使用播放器,但这也不起作用。是的,我尝试了你的URL,但它需要一些我没有的steamid,通过尝试,我只得到了403禁止,因此我无法告诉你到底出了什么问题。但是,如果你把XML添加到你的问题中,我可能会给你一些建议,引导你前进。@Johansnit:好吧,
$XML
已经是
了,所以你不需要在上面写
->response
,只要把那部分删掉就可以了。
$steamid = $_SESSION['steamid'];
$url     = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=X&steamids=$steamid&format=xml";
$data    = file_get_contents($url);
$xml     = simplexml_load_string($data);

header('Content-Type: text/xml');
die($xml->asXML());