0

我正在尝试从 API 打印出这个 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::
  • 试图获取非对象的属性

我只是想知道是否有人可以指出我正确的方向。目前我只想打印出一个 HomeTeam 名称,例如,从这里我可以进一步进步。

4

2 回答 2

0

我认为他的 $response 变量就是 API 调用的 RAW 响应。如果这是正确的,您需要将该 $response 加载到 PHP simplexml_load_string函数中或使用simplexml_load_file加载 API 调用,然后才能像对象一样使用您的变量。这些函数将为您返回一个 SimpleXMLElement 对象,因此您可以执行 $xml->Match 之类的操作

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

于 2013-08-29T15:05:55.310 回答
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";
    }
于 2013-08-29T15:15:49.883 回答