1

我在使用 xpath 和 XML 时遇到问题

这是 XML 文件的示例

    <OddService>
    <Header>
    <Status>000</Status>
    <Description>OK</Description>
    <Timestamp>1352407434</Timestamp>
    </Header>
    <Results>
    <Event>
    <EventID>1182745</EventID>
    <StartDate>2012-11-09T19:45:00</StartDate>
    <SportID>6046</SportID>
    <LeagueID>1182547</LeagueID>
    <LocationID>243</LocationID>
    <Status>NSY</Status>
    <LastUpdate>2012-11-08T20:27:14.767</LastUpdate>
    <HomeTeam ID="7" Name="Middlesbrough" Logo=""/>
    <AwayTeam ID="992" Name="Sheffield W" Logo=""/>
    <Scores status="" time=""/>
    <Scorers/>
    <Cards/>
    <Outcomes>...</Outcomes>
    </Event>
    <OddService>
    <Header>
    <Status>000</Status>
    <Description>OK</Description>
    <Timestamp>1352407434</Timestamp>
    </Header>
    <Results>
    <Event>
    <EventID>1182745</EventID>
    <StartDate>2012-11-09T19:45:00</StartDate>
    <SportID>6046</SportID>
    <LeagueID>1182547</LeagueID>
    <LocationID>243</LocationID>
    <Status>NSY</Status>
    <LastUpdate>2012-11-08T20:27:14.767</LastUpdate>
    <HomeTeam ID="7" Name="Middlesbrough" Logo=""/>
    <AwayTeam ID="992" Name="Sheffield W" Logo=""/>
    <Scores status="" time=""/>
    <Scorers/>
    <Cards/>
    <Outcomes>...</Outcomes>
    </Event>
    </Results>
    </OddService>

在这个 XML 示例中,我只包含了其中一个条目。我正在使用这个 PHP 代码,但没有得到任何结果......有人有什么想法吗?

    <?php
    $loadfile = simplexml_load_file('matches.xml');

    foreach ($loadfile->OddService->Results as $gameinfo):
    $kodate=$gameinfo->StartDate;
    $status=$gameinfo->Status;
    $id=$gameinfo->EventID;
    $league=$gameinfo->LeagueID;
    $hometeam=$gameinfo->HomeTeam['Name'];
    $awayteam=$gameinfo->AwayTeam['Name'];
    $home=$gameinfo->Outcomes->Outcome->Bookmaker->Odds[0]['currentPrice'];
    $away=$gameinfo->Outcomes->Outcome->Bookmaker->Odds[1]['currentPrice'];
    $draw=$gameinfo->Outcomes->Outcome->Bookmaker->Odds[2]['currentPrice'];
    ?>

提前致谢!

4

2 回答 2

0

该代码中没有 xpath ...但是,当您加载 XML 时,根目录已经包含在内,因此您可能需要将 foreach 更改为

foreach ($loadfile->Results as $gameinfo):
于 2012-11-08T22:22:31.853 回答
0

我正在尝试您的 XML 文件——在我自己添加了根节点之后——它工作正常。我看到的唯一问题是并非所有结果节点都有一个结果节点,因此当 PHP 在 foreach 循环中运行最后三行时会出现错误。你可以用这个来解决这个问题:

if ( $gameinfo->Outcomes ) {
    $home=$gameinfo->Outcomes->Outcome->Bookmaker->Odds[0]['currentPrice'];
    $away=$gameinfo->Outcomes->Outcome->Bookmaker->Odds[1]['currentPrice'];
    $draw=$gameinfo->Outcomes->Outcome->Bookmaker->Odds[2]['currentPrice'];
}

除此之外,它应该可以工作...您是否尝试过var_dump在循环中使用 $gameinfo ?

于 2012-11-08T22:44:06.070 回答