使用PHP SimpleXML和XPath解析深层XML

使用PHP SimpleXML和XPath解析深层XML,php,xml,xpath,simplexml,Php,Xml,Xpath,Simplexml,我在这儿。我似乎误解了如何使用XPath获取XML节点的值,而且我还没有找到一个能够完全解决我做错了什么的StackOverflow答案 所以,使用RPG极客的API,我试图获取一些关于游戏恐惧的信息。() 我知道我正在成功地拉入rpggeekXML,因为如果我做var\u dump($rpggeekXML),我可以看到我期望的所有信息。然而,如果我做var_dump($rating)或变量转储($usersrated),它返回数组(0){}。看来我一定是把XPath行搞砸了,但我不知道怎么做。

我在这儿。我似乎误解了如何使用XPath获取XML节点的值,而且我还没有找到一个能够完全解决我做错了什么的StackOverflow答案

所以,使用RPG极客的API,我试图获取一些关于游戏恐惧的信息。()


我知道我正在成功地拉入rpggeekXML,因为如果我做
var\u dump($rpggeekXML),我可以看到我期望的所有信息。然而,如果我做
var_dump($rating)
变量转储($usersrated)
,它返回
数组(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];
收集文档中的所有
“平均值”
节点:

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

echo $rating[0];

工作得很好,我现在明白我在哪里误解了事情。谢谢
$rating = $rpggeekXML->xpath( '//average' );    

echo $rating[0];