Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML、PHP和XPATH-无结果_Php_Xml_Xpath - Fatal编程技术网

XML、PHP和XPATH-无结果

XML、PHP和XPATH-无结果,php,xml,xpath,Php,Xml,Xpath,我在使用xpath和XML时遇到问题 这是XML文件的一个示例 <OddService> <Header> <Status>000</Status> <Description>OK</Description> <Timestamp>1352407434</Timestamp> </Header> <Results>

我在使用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'];
    ?>

提前谢谢

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

foreach ($loadfile->Results as $gameinfo):

我正在尝试您的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'];
}

除此之外,它应该是有效的。。。您是否尝试在循环中转储$gameinfo?

啊,对不起,有人错过了这一点$xml=simplexml_加载_文件'example.xml';$fixtures=$xml->xpath'/OddService/Results';//$loadfile=simplexml_load_文件'games2.xml';foreach$fixtures as$gameinfo:您的XML字符串格式不正确,似乎缺少一个或两个结束标记这是我的XML页面:顺便说一下,我的XML文件如下:它托管在其他地方,这只是一个副本-您好,感谢您的反馈。问题是,如果我从XML中删除以下内容,它可以正常工作1352413846。。。。。。我需要看更多的代码,也许是从加载XML到处理结果的完整代码集。。。您的XML文件在我这方面工作得很好……为什么不创建一个JSFIDLE并将代码存储在那里,然后将URL发布到这里呢?这样,其他人都可以看到它:我第一次使用JSFIDLE,但它是: