XML、PHP和XPATH-无结果
我在使用xpath和XML时遇到问题 这是XML文件的一个示例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>
<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,但它是: