2013-08-29 4 views
0

API에서이 XML을 인쇄하려고합니다.PHP 오류를 통해 XML 데이터 구문 분석

<XMLSOCCER.COM> 
<Match> 
<Id>309389</Id> 
<Date>2013-08-04T16:00:00+02:00</Date> 
<League>Scottish Premier League</League> 
<Round>1</Round> 
<HomeTeam>St Johnstone</HomeTeam> 
<HomeTeam_Id>46</HomeTeam_Id> 
<HomeGoals>1</HomeGoals> 
<AwayTeam>Hearts</AwayTeam> 
<AwayTeam_Id>50</AwayTeam_Id> 
<AwayGoals>0</AwayGoals> 
<Time>Finished</Time> 
<Location>McDiarmid Park</Location> 
<HomeTeamYellowCardDetails>83': Murray Davidson;</HomeTeamYellowCardDetails> 
<AwayTeamYellowCardDetails>78': Jamie Hamill;</AwayTeamYellowCardDetails> 
<HomeTeamRedCardDetails/> 
<AwayTeamRedCardDetails/> 
</Match> 
<Match> 
<Id>309390</Id> 
<Date>2013-08-03T16:00:00+02:00</Date> 
<League>Scottish Premier League</League> 
<Round>1</Round> 
<HomeTeam>Aberdeen</HomeTeam> 
<HomeTeam_Id>45</HomeTeam_Id> 
<HomeGoals>2</HomeGoals> 
<AwayTeam>Kilmarnock</AwayTeam> 
<AwayTeam_Id>52</AwayTeam_Id> 
<AwayGoals>1</AwayGoals> 
<Time>Finished</Time> 
<Location>Pittodrie Stadium</Location> 
<HomeTeamYellowCardDetails>39': Jonathan Hayes;</HomeTeamYellowCardDetails> 
<AwayTeamYellowCardDetails>38': James Fowler;18': Christopher Johnston;</AwayTeamYellowCardDetails> 
<HomeTeamRedCardDetails/> 
<AwayTeamRedCardDetails/> 
</Match> 
</XMLSOCCER.COM> 

여기에 내가 지금까지 쓴 내 PHP 코드 :

foreach($response->Match as $match){ 
     print "{$match->HomeTeam}<br />\n"; 
     } 

    print $response -> {"XMLSOCCER.COM"}; 

하지만, 나는 다음과 같은 오류가 계속 출력을 얻을 수없는 것 :

  • 을 정의되지 않은 속성 : stdClass ::
에있는 개체가 아닌 속성을 얻으려고합니다. 0

나는 누군가가 이것으로 올바른 방향으로 나를 가리킬 수 있는지 궁금 하네. 지금은 예를 들어 HomeTeam 이름을 프린트하는 것을 좋아할 것입니다. 여기서부터 더 진행할 수 있습니다.

+0

을 사용할 수 있습니다, XML 피드를 구문 분석 할 수 그럼'$ 응답 '이 실제로 무엇인지를 보여주지 않았습니다. 그 외에도 오류 자체는 매우 명확합니다 : 당신은 그 정해지지 않은'$ response' something * wrong *에 접근하고 있습니다. XML을 파싱하고 싶습니다. – hakre

+0

이 모든 것에서'$ response'는 무엇입니까? SOAP 시스템에서 직접? DOM/simple_xml 객체? –

+0

당신은 아마도'$ response-> Match' 대신'$ response -> { "Match"}'를 시도해 보았을 것입니다. – collapsar

답변

0

나는 $ response 변수가 API 호출의 RAW 응답이라고 생각하고 있습니다. 이 값이 정확하다면 PHP처럼 simplexml_load_string 함수에 해당 $ 응답을로드하거나 객체처럼 변수를 사용할 수 있으려면 simplexml_load_file으로 API 호출을로드해야합니다. 당신이 $ XML- 같은 것들> 경기를 할 수 있도록이 기능은 다시 당신에게 SimpleXMLElement 개체를 줄 것이다

simplexml_load_string 다음과 같이 http://php.net/manual/en/function.simplexml-load-string.php

+0

먼저, 도와 주셔서 감사합니다. 둘째, 이제 편집을 추가했습니다.'$ response = $ client-> GetFixturesByLeagueAndSeason (array ('api_key'=> '키', '시즌'=> '1314', '리그'=> 'SPL')); \t/* foreach ($ 응답 -> $ 일치와 일치) { 인쇄 "{$ match-> HomeTeam}
\ n"; } */ \t $ xml = simplexml_load_string ($ response); \t 인쇄 $ xml; ' 그러나 지금은이 경고와 함께 제공 : 경고 : simplexml_load_string() 매개 변수 1 문자열이 될 것으로 기대하고, 객체가 에 주어진하지만 여전히 현재 출력, 그냥 객체를 문자열로 변경하는 방법을 궁금해? 아니면 그게 내 문제를 해결할 것인가? – MrShanMan

0

당신이 당신 simplexml_load_file

$feed_url="your xml feed url"; 

    $response = simplexml_load_file($feed_url); 

    print_r($response); 

    foreach($response->Match as $match) 
    { 
    echo "{$match->HomeTeam}<br />\n"; 
    }