问题
$xml_data = simplexml_load_file('demo.xml');
foreach ($xml_data->Game as $game) {
$t = $game['Time'];
$odds = $game->xpath('SportsBook[@Name="3Dimes"]/Odds');
echo 'Time: ' . $t . ' LineType: ' . $odds[0]->attributes()['LineType']
      . ' LastUpdated: ' . $odds[0]->attributes()['LastUpdated'] . PHP_EOL;
}
demo.xml
<?xml version="1.0" encoding="utf-8"?>
<GameOdds SportsCode="MLB">
    <Game Code="121" Date="08/25/2017" Time="1:45 PM" HomeBoardNumber="11"     
          Home="home" RoadBoardNumber="951" Road="Road" Note=""> 
        <SportsBook ID="5" Name="5Dimes">
            <Odds LineType="2"  LastUpdated="10"  />
        </SportsBook>
        <SportsBook ID="5" Name="3Dimes">
            <Odds LineType="3"  LastUpdated="20"  />
        </SportsBook> </Game>
    <Game Code="122" Date="07/02/2017" Time="1:45 PM" HomeBoardNumber="11" Home="home" RoadBoardNumber="931" Road="Road" Note="">
        <SportsBook ID="2" Name="5Dimes">
            <Odds LineType="2"  LastUpdated="10"  />
        </SportsBook>
        <SportsBook ID="6" Name="3Dimes">
            <Odds LineType="3"  LastUpdated="30"  />
        </SportsBook> 
    </Game>
    <Game Code="121" Date="08/25/2017" Time="1:45 PM" HomeBoardNumber="11" Home="home" RoadBoardNumber="951" Road="Road" Note=""> 
        <SportsBook ID="5" Name="5Dimes">
            <Odds LineType="2"  LastUpdated="10"  />
        </SportsBook>
        <SportsBook ID="5" Name="3Dimes">
            <Odds LineType="3"  LastUpdated="30"  />
        </SportsBook> </Game>
    <Game Code="121" Date="08/31/2017" Time="1:45 PM" HomeBoardNumber="11" Home="home" RoadBoardNumber="951" Road="Road" Note=""> 
        <SportsBook ID="5" Name="5Dimes">
            <Odds LineType="2"  LastUpdated="10"  />
        </SportsBook>
        <SportsBook ID="5" Name="3Dimes">
            <Odds LineType="3"  LastUpdated="20"  />
        </SportsBook> </Game>
    <Game Code="121" Date="08/25/2017" Time="1:45 PM" HomeBoardNumber="11" Home="home" RoadBoardNumber="951" Road="Road" Note=""> 
        <SportsBook ID="5" Name="5Dimes">
            <Odds LineType="2"  LastUpdated="10"  />
        </SportsBook>
        <SportsBook ID="5" Name="3Dimes">
            <Odds LineType="3"  LastUpdated="20"  />
        </SportsBook> </Game>
</GameOdds>
Updated my question now i want to fetch only if GAME Date="08/25/2017" Plus only fetch 2 games only. Result will be like this
Time:1:45 PM LineType:2 LastUpdated:10
Time:1:45 PM LineType:2 LastUpdated:10
Thanks in advance.
回答1:
Try this simple one, Hope this one will be helpful.
Try this code snippet here
$xml_data = simplexml_load_file('demo.xml');
$result=$xml_data->xpath('//Game[@Date="08/25/2017"]');//querying with XPath
$result=array_slice($result, 0,2);//slicing data for two results
foreach ($result as $game) 
{
    $odds = $game->xpath('SportsBook[@Name="3Dimes"]/Odds');
    $t = $game['Time'];
    echo 'Time: ' . $t . ' LineType: ' . $odds[0]->attributes()['LineType']
      . ' LastUpdated: ' . $odds[0]->attributes()['LastUpdated'] . PHP_EOL;
}
    回答2:
Use the following approach:
$xml_data = simplexml_load_file('demo.xml');
foreach ($xml_data->xpath('//Game[@Date="08/25/2017" and position() <= 3]') as $game) {
    $t = $game['Time'];
    $odds = $game->xpath('SportsBook[@Name="5Dimes"]/Odds');
    echo 'Time: ' . $t . ' LineType: ' . $odds[0]->attributes()['LineType']
        . ' LastUpdated: ' . $odds[0]->attributes()['LastUpdated'] . PHP_EOL;
}
The output:
Time: 1:45 PM LineType: 2 LastUpdated: 10
Time: 1:45 PM LineType: 2 LastUpdated: 10
    来源:https://stackoverflow.com/questions/45875907/fetch-values-from-xml-with-specific-game-date