Fetch values from xml with specific Game date

半腔热情 提交于 2020-01-06 05:47:08

问题


$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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!