使用 PHP 简单 XML 和 XPath 解析深度 XML

Parsing deep XML with PHP SimpleXML and XPath

PHP 菜鸟在这里。我似乎误解了如何使用 XPath 获取 XML 节点的值,而且我一直无法找到 Whosebug 的答案来完全解决我做错的问题。

因此,使用 RPG Geek 的 API,我试图获取有关游戏 Dread 的一些信息。 (Here's a link to the URI.)

$rpggeekXML = simplexml_load_file('https://www.rpggeek.com/xmlapi/boardgame/166952?&stats=1');
$rating = $rpggeekXML->xpath('ratings/average');
$usersrated = $rpggeekXML->xpath('ratings/usersrated');

我知道我已经成功地引入了 rpggeek XML,因为如果我这样做 var_dump($rpggeekXML);,我可以看到我期望的所有信息。但是,如果我做 var_dump($rating);var_dump($usersrated);,它 returns array(0) { }。所以看来我一定是搞砸了 XPath 行,但我不知道如何做。我做错了什么?

我认为你的 xpath 语法有误。你可以试试这个

$rpggeekXML = simplexml_load_file('https://www.rpggeek.com/xmlapi/boardgame/166952?&stats=1');
$rating = $rpggeekXML->xpath('//ratings/average');
$usersrated = $rpggeekXML->xpath('//ratings/usersrated');

使用完整路径查找所需节点:

$rating = $rpggeekXML->xpath( 'boardgame/statistics/ratings/average' );

echo $rating[0];

收集文档中的所有 "average" 个节点:

$rating = $rpggeekXML->xpath( '//average' );    

echo $rating[0];