想想我的xml是这样的:
<products>
<product>
<ProductID>252</ProductID>
<detail>
<color>red</color>
<price>$15</price>
</detail>
<detail>
<color>blue</color>
<price>$25</price>
</detail>
</product>
</products>
我需要获得ProductID = 252的RED MODEL
的价格值 我尝试过这个;但无法得到价格值:$q = $xml->xpath('/products/product[ProductID="252"]/detail[color="red"]');
echo $q['price'];
答案 0 :(得分:1)
你在这里遇到了一些小问题。您的XPath查询包含根<products>
标记,如果您已将其导入SimpleXML,则不需要该标记。查询可以以product/...
接下来,xpath()
返回匹配元素的数组,即使它们只有一个。所以$q
指的是完整的结果集,而不是第一个匹配。您正在寻找的匹配是数组的第一个元素,位于键0
最后,您指的是使用数组索引的价格 - ['price']
。这用于获取标记的属性,而不是子节点。如果您想要<price>
元素的文本内容,则应使用对象访问运算符->
,并强制转换为字符串。
完整代码应如下所示:
$q = $xml->xpath('product[ProductID="252"]/detail[color="red"]')[0];
echo (string) $q->price;
// $15
有关完整示例,请参阅https://eval.in/936371。