2013-08-29 4 views
0

Я пытаюсь распечатать этот xml из API.Анализ XML-данных с помощью ошибок PHP

<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 ::
  • Попытка получить свойство не-объекта в

Мне просто интересно, может ли кто-нибудь указать мне в правильном направлении. На данный момент мне просто хотелось бы напечатать имя HomeTeam, например, отсюда я смогу продвинуться дальше.

+0

Ну, вы не показали, что такое '$ response'. Кроме того, сама ошибка довольно понятна: вы получаете доступ к этому незатребованному '$ response' something * wrong *. Поэтому я могу только догадываться, что вы хотите разобрать XML. – hakre

+0

Что такое '$ response' во всем этом? Непосредственно из системы SOAP? Объект DOM/simple_xml? –

+0

вы, возможно, забыли некоторые цитаты: попробуйте '$ response -> {" Match "}' вместо '$ response-> Match'. – collapsar

ответ

0

Я думаю, что его переменная $ response - это просто ответ RAW от вызова API. Если это правильно, вам нужно загрузить этот $ response в функцию PHP simplexml_load_string или загрузить вызов API с simplexml_load_file, прежде чем вы сможете использовать свою переменную как объект. Эти функции даст вам объект SimpleXMLElement обратно, так что вы можете сделать что-то вроде $ xml-> Матч

simplexml_load_string: http://php.net/manual/en/function.simplexml-load-string.php

+0

Во-первых, Спасибо за помощь. Во-вторых, теперь я добавил ваше редактирование. '$ response = $ client-> GetFixturesByLeagueAndSeason (массив ('api_key' => 'Key', 'season' => '1314', 'league' => 'SPL')); \t/* foreach ($ response-> Match as $ match) { print "{$ match-> HomeTeam}
\ n"; } */ \t $ xml = simplexml_load_string ($ response); \t print $ xml; ' Но теперь оно появляется с предупреждением: Предупреждение: simplexml_load_string() ожидает, что параметр 1 является строкой, объект указан в Но все же теперь выводится, просто интересно, как изменить объект на строку? или это будет проблемой для моей проблемы? – MrShanMan

0

вы можете разобрать фид XML следующим образом, вы можете использовать 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"; 
    } 
Смежные вопросы