使用PHP遍历PrestaShop API返回XML提取产品价格的问题
解决方案:遍历PrestaShop API返回XML提取product字段
核心问题定位
你代码的核心错误是混淆了XML节点属性和子元素的获取方式:
$p->attributes()仅用于获取节点标签内定义的属性(例如<product id="97" price="37">中的id、price才属于属性)- 你给出的XML结构中,
price、id等都是product节点的子元素,直接通过对象属性访问即可,不需要调用attributes()
正确实现代码
$opt = array( 'resource' => 'products', 'display' => 'full', 'filter[id]' => $_GET['id'], 'postXml' => 'asXML' ); $xml = $webService->get($opt); // 遍历所有product节点 foreach ($xml->products->product as $p) { // 直接访问子元素,强转成数值类型可避免后续操作出现类型问题 $price = (float)$p->price; $id = (int)$p->id; $weight = (float)$p->weight; // 测试输出 echo "商品ID:{$id},价格:{$price}\n"; }
排障补充
如果修改后还是无输出,可按以下步骤排查:
- 先打印返回的XML结构确认API调用成功:
echo $xml->asXML();看是否能输出完整的XML内容 - 确认
filter[id]参数是否正确,过滤条件下是否有匹配的商品数据 - 检查PrestaShop WebService权限是否开启了产品的读取权限
内容的提问来源于stack exchange,提问作者Liam Bonactarian
相关产品推荐
相关产品推荐

