2013-05-11 3 views
0

제출 된 64 비트 스팀 코드를 사용하고 Steam API를 사용하여 정보를 뱉어내는 간단한 함수를 만들려고합니다. 이전에 XML을 사용했기 때문에 JSON 대신 XML을 사용하기로했습니다. 나는 여전히 PHP에 매우 익숙하지 않다.Steam API의 특정 XML 필드 인쇄

데이터를 얻기하고 잘 작동 인쇄하지만 난이 특정 필드

$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)"를 사용하여 반환되는 예제입니다. 내가 원시 XML을 인쇄 hakre 사용자의 도움으로

object(SimpleXMLElement)#1 (1) { ["players"]=> object(SimpleXMLElement)#2 (1) { ["player"]=> object(SimpleXMLElement)#3 (16) { ["steamid"]=> string(17) "76561198001776632" ["communityvisibilitystate"]=> string(1) "3" ["profilestate"]=> string(1) "1" ["personaname"]=> string(5) "johan" ["lastlogoff"]=> string(10) "1368300096" ["commentpermission"]=> string(1) "1" ["profileurl"]=> string(38) "http://steamcommunity.com/id/mrbbqlol/" ["avatar"]=> string(114) "http://media.steampowered.com/steamcommunity/public/images/avatars/b7/b765fa514b9c44376e84754acb12e66821d4564c.jpg" ["avatarmedium"]=> string(121) "http://media.steampowered.com/steamcommunity/public/images/avatars/b7/b765fa514b9c44376e84754acb12e66821d4564c_medium.jpg" ["avatarfull"]=> string(119) "http://media.steampowered.com/steamcommunity/public/images/avatars/b7/b765fa514b9c44376e84754acb12e66821d4564c_full.jpg" ["personastate"]=> string(1) "1" ["primaryclanid"]=> string(18) "103582791431859033" ["timecreated"]=> string(10) "1223663039" ["loccountrycode"]=> string(2) "SE" ["locstatecode"]=> string(2) "26" ["loccityid"]=> string(5) "43754" } } } 

,이처럼 보이는 것입니다 : 나는 다른 유사한 질문을 살펴 보았다하지만 난 해결할 수 없었던

<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> 

내 문제. 특정 필드를 구문 분석하고 에코해야합니까? 이것에 simplexmlelement를 사용할 수 있습니까?

감사

답변

2

어쩌면이 사용할 수 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과 같이 다양한 색상으로 강조된 문양이 인쇄되어 있음).

basic SimpleXML usage examples에 설명 된대로 요소에 액세스 할 수 있습니다. SimpleXMLElements에서 전체 XML (하위) 트리를 표시하지 않기 때문에 print_r 또는 var_dump을 많이 신뢰할 수 없습니다.

+1

마지막 두 줄은 +1하십시오! – michi

+1

감사합니다, 그 두 줄을 사용하여 원시 XML 파일을 살펴보고 구조를 살펴볼 수있었습니다. "기본 SimpleXML 사용"에서 예제를 보면서 "echo $ xml-> response-> players-> player-> personaname"을 사용해야한다는 결론에 도달했습니다. " 그러나 그것은 어떤 결과도주는 것처럼 보이지 않았습니다. 나는 플레이어 [0] 대신 플레이어를 사용하려고 시도했지만 그 중 하나는 작동하지 않았습니다. –

+0

네, 그럴 수 있습니다,하지만 URL을 시도했지만, 내가 가지고 있지 않은 시도와 함께 단지 403 잘못 됐어 그래서 내가 정확히 무엇이 잘못되었는지 말할 수 없어. 그러나 XML을 질문에 추가하면 길을 인도하는 몇 가지 제안을 줄 수 있습니다. – hakre