You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用XPath匹配所有variation_price*节点并赋值到数组?

问题解决:获取XML中所有variation_price*节点的值到数组

你的XPath语句存在两个关键错误:

  1. name必须写成**name()**(带括号),这是XPath规范中获取节点名称的函数写法;
  2. 路径缺少节点匹配符,//[starts-with(...)]的语法不合法,需要指定匹配的节点类型,比如用*代表任意子节点。

另外,由于$product已经指向<post>节点,不需要用//从文档根节点开始查找,直接匹配当前节点下的子节点更高效。

正确实现步骤

  1. 用修正后的XPath获取目标节点:
$priceNodes = $product->xpath('*[starts-with(name(), "variation_price")]');
  1. 将SimpleXML节点对象转换为字符串值数组:
    可以选择遍历或者用array_map简化操作:
// 方法一:遍历转换
$priceValues = [];
foreach ($priceNodes as $node) {
    $priceValues[] = (string)$node;
}

// 方法二:array_map一行完成
$priceValues = array_map(fn($node) => (string)$node, $product->xpath('*[starts-with(name(), "variation_price")]'));

最终效果

执行后$priceValues数组会包含所有价格值:

Array
(
    [0] => 7.20
    [1] => 7.40
    [2] => 8.00
    [3] => 8.50
    [4] => 9.30
)

内容的提问来源于stack exchange,提问作者Faye D.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:25:20